uvd-x402-sdk 0.2.2__py3-none-any.whl → 0.2.3__py3-none-any.whl

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.
@@ -1,215 +1,215 @@
1
- """
2
- EVM network configurations.
3
-
4
- This module defines configurations for all supported EVM-compatible chains.
5
- Each chain uses ERC-3009 TransferWithAuthorization for USDC transfers.
6
-
7
- Important EIP-712 domain considerations:
8
- - Most chains use 'USD Coin' as the domain name
9
- - Celo, HyperEVM, Unichain, Monad use 'USDC' as the domain name
10
- """
11
-
12
- from uvd_x402_sdk.networks.base import (
13
- NetworkConfig,
14
- NetworkType,
15
- register_network,
16
- )
17
-
18
- # =============================================================================
19
- # EVM Networks Configuration
20
- # =============================================================================
21
-
22
- # Base (Layer 2)
23
- BASE = NetworkConfig(
24
- name="base",
25
- display_name="Base",
26
- network_type=NetworkType.EVM,
27
- chain_id=8453,
28
- usdc_address="0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
29
- usdc_decimals=6,
30
- usdc_domain_name="USD Coin",
31
- usdc_domain_version="2",
32
- rpc_url="https://mainnet.base.org",
33
- enabled=True,
34
- )
35
-
36
- # Ethereum Mainnet
37
- ETHEREUM = NetworkConfig(
38
- name="ethereum",
39
- display_name="Ethereum",
40
- network_type=NetworkType.EVM,
41
- chain_id=1,
42
- usdc_address="0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
43
- usdc_decimals=6,
44
- usdc_domain_name="USD Coin",
45
- usdc_domain_version="2",
46
- rpc_url="https://eth.llamarpc.com",
47
- enabled=True,
48
- )
49
-
50
- # Polygon (PoS)
51
- POLYGON = NetworkConfig(
52
- name="polygon",
53
- display_name="Polygon",
54
- network_type=NetworkType.EVM,
55
- chain_id=137,
56
- usdc_address="0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359",
57
- usdc_decimals=6,
58
- usdc_domain_name="USD Coin",
59
- usdc_domain_version="2",
60
- rpc_url="https://polygon-rpc.com",
61
- enabled=True,
62
- )
63
-
64
- # Arbitrum One
65
- ARBITRUM = NetworkConfig(
66
- name="arbitrum",
67
- display_name="Arbitrum One",
68
- network_type=NetworkType.EVM,
69
- chain_id=42161,
70
- usdc_address="0xaf88d065e77c8cC2239327C5EDb3A432268e5831",
71
- usdc_decimals=6,
72
- usdc_domain_name="USD Coin",
73
- usdc_domain_version="2",
74
- rpc_url="https://arb1.arbitrum.io/rpc",
75
- enabled=True,
76
- )
77
-
78
- # Optimism
79
- OPTIMISM = NetworkConfig(
80
- name="optimism",
81
- display_name="Optimism",
82
- network_type=NetworkType.EVM,
83
- chain_id=10,
84
- usdc_address="0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85",
85
- usdc_decimals=6,
86
- usdc_domain_name="USD Coin",
87
- usdc_domain_version="2",
88
- rpc_url="https://mainnet.optimism.io",
89
- enabled=True,
90
- )
91
-
92
- # Avalanche C-Chain
93
- AVALANCHE = NetworkConfig(
94
- name="avalanche",
95
- display_name="Avalanche C-Chain",
96
- network_type=NetworkType.EVM,
97
- chain_id=43114,
98
- usdc_address="0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E",
99
- usdc_decimals=6,
100
- usdc_domain_name="USD Coin",
101
- usdc_domain_version="2",
102
- rpc_url="https://avalanche-c-chain-rpc.publicnode.com",
103
- enabled=True,
104
- )
105
-
106
- # Celo
107
- # NOTE: Celo uses 'USDC' (not 'USD Coin') for EIP-712 domain name
108
- CELO = NetworkConfig(
109
- name="celo",
110
- display_name="Celo",
111
- network_type=NetworkType.EVM,
112
- chain_id=42220,
113
- usdc_address="0xcebA9300f2b948710d2653dD7B07f33A8B32118C",
114
- usdc_decimals=6,
115
- usdc_domain_name="USDC", # Different from other chains!
116
- usdc_domain_version="2",
117
- rpc_url="https://forno.celo.org",
118
- enabled=True,
119
- )
120
-
121
- # HyperEVM (Hyperliquid)
122
- # NOTE: HyperEVM uses 'USDC' (not 'USD Coin') for EIP-712 domain name
123
- HYPEREVM = NetworkConfig(
124
- name="hyperevm",
125
- display_name="HyperEVM",
126
- network_type=NetworkType.EVM,
127
- chain_id=999,
128
- usdc_address="0xb88339CB7199b77E23DB6E890353E22632Ba630f",
129
- usdc_decimals=6,
130
- usdc_domain_name="USDC", # Different from other chains!
131
- usdc_domain_version="2",
132
- rpc_url="https://rpc.hyperliquid.xyz/evm",
133
- enabled=True,
134
- )
135
-
136
- # Unichain
137
- # NOTE: Unichain uses 'USDC' (not 'USD Coin') for EIP-712 domain name
138
- UNICHAIN = NetworkConfig(
139
- name="unichain",
140
- display_name="Unichain",
141
- network_type=NetworkType.EVM,
142
- chain_id=130,
143
- usdc_address="0x078d782b760474a361dda0af3839290b0ef57ad6",
144
- usdc_decimals=6,
145
- usdc_domain_name="USDC", # Different from other chains!
146
- usdc_domain_version="2",
147
- rpc_url="https://unichain-rpc.publicnode.com",
148
- enabled=True,
149
- )
150
-
151
- # Monad
152
- # NOTE: Monad uses 'USDC' (not 'USD Coin') for EIP-712 domain name
153
- MONAD = NetworkConfig(
154
- name="monad",
155
- display_name="Monad",
156
- network_type=NetworkType.EVM,
157
- chain_id=143,
158
- usdc_address="0x754704bc059f8c67012fed69bc8a327a5aafb603",
159
- usdc_decimals=6,
160
- usdc_domain_name="USDC", # Different from other chains!
161
- usdc_domain_version="2",
162
- rpc_url="https://rpc.monad.xyz",
163
- enabled=True,
164
- )
165
-
166
- # =============================================================================
167
- # Register all EVM networks
168
- # =============================================================================
169
-
170
- _EVM_NETWORKS = [
171
- BASE,
172
- ETHEREUM,
173
- POLYGON,
174
- ARBITRUM,
175
- OPTIMISM,
176
- AVALANCHE,
177
- CELO,
178
- HYPEREVM,
179
- UNICHAIN,
180
- MONAD,
181
- ]
182
-
183
- for network in _EVM_NETWORKS:
184
- register_network(network)
185
-
186
-
187
- def get_usdc_domain_name(network_name: str) -> str:
188
- """
189
- Get the correct EIP-712 domain name for USDC on a network.
190
-
191
- Args:
192
- network_name: Network identifier
193
-
194
- Returns:
195
- Domain name string ('USD Coin' or 'USDC')
196
- """
197
- # Networks that use 'USDC' instead of 'USD Coin'
198
- usdc_domain_networks = {"celo", "hyperevm", "unichain", "monad"}
199
-
200
- if network_name.lower() in usdc_domain_networks:
201
- return "USDC"
202
- return "USD Coin"
203
-
204
-
205
- def get_token_decimals(network_name: str) -> int:
206
- """
207
- Get USDC token decimals for a network.
208
-
209
- Args:
210
- network_name: Network identifier
211
-
212
- Returns:
213
- Number of decimals (6 for all supported chains)
214
- """
215
- return 6
1
+ """
2
+ EVM network configurations.
3
+
4
+ This module defines configurations for all supported EVM-compatible chains.
5
+ Each chain uses ERC-3009 TransferWithAuthorization for USDC transfers.
6
+
7
+ Important EIP-712 domain considerations:
8
+ - Most chains use 'USD Coin' as the domain name
9
+ - Celo, HyperEVM, Unichain, Monad use 'USDC' as the domain name
10
+ """
11
+
12
+ from uvd_x402_sdk.networks.base import (
13
+ NetworkConfig,
14
+ NetworkType,
15
+ register_network,
16
+ )
17
+
18
+ # =============================================================================
19
+ # EVM Networks Configuration
20
+ # =============================================================================
21
+
22
+ # Base (Layer 2)
23
+ BASE = NetworkConfig(
24
+ name="base",
25
+ display_name="Base",
26
+ network_type=NetworkType.EVM,
27
+ chain_id=8453,
28
+ usdc_address="0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
29
+ usdc_decimals=6,
30
+ usdc_domain_name="USD Coin",
31
+ usdc_domain_version="2",
32
+ rpc_url="https://mainnet.base.org",
33
+ enabled=True,
34
+ )
35
+
36
+ # Ethereum Mainnet
37
+ ETHEREUM = NetworkConfig(
38
+ name="ethereum",
39
+ display_name="Ethereum",
40
+ network_type=NetworkType.EVM,
41
+ chain_id=1,
42
+ usdc_address="0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
43
+ usdc_decimals=6,
44
+ usdc_domain_name="USD Coin",
45
+ usdc_domain_version="2",
46
+ rpc_url="https://eth.llamarpc.com",
47
+ enabled=True,
48
+ )
49
+
50
+ # Polygon (PoS)
51
+ POLYGON = NetworkConfig(
52
+ name="polygon",
53
+ display_name="Polygon",
54
+ network_type=NetworkType.EVM,
55
+ chain_id=137,
56
+ usdc_address="0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359",
57
+ usdc_decimals=6,
58
+ usdc_domain_name="USD Coin",
59
+ usdc_domain_version="2",
60
+ rpc_url="https://polygon-rpc.com",
61
+ enabled=True,
62
+ )
63
+
64
+ # Arbitrum One
65
+ ARBITRUM = NetworkConfig(
66
+ name="arbitrum",
67
+ display_name="Arbitrum One",
68
+ network_type=NetworkType.EVM,
69
+ chain_id=42161,
70
+ usdc_address="0xaf88d065e77c8cC2239327C5EDb3A432268e5831",
71
+ usdc_decimals=6,
72
+ usdc_domain_name="USD Coin",
73
+ usdc_domain_version="2",
74
+ rpc_url="https://arb1.arbitrum.io/rpc",
75
+ enabled=True,
76
+ )
77
+
78
+ # Optimism
79
+ OPTIMISM = NetworkConfig(
80
+ name="optimism",
81
+ display_name="Optimism",
82
+ network_type=NetworkType.EVM,
83
+ chain_id=10,
84
+ usdc_address="0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85",
85
+ usdc_decimals=6,
86
+ usdc_domain_name="USD Coin",
87
+ usdc_domain_version="2",
88
+ rpc_url="https://mainnet.optimism.io",
89
+ enabled=True,
90
+ )
91
+
92
+ # Avalanche C-Chain
93
+ AVALANCHE = NetworkConfig(
94
+ name="avalanche",
95
+ display_name="Avalanche C-Chain",
96
+ network_type=NetworkType.EVM,
97
+ chain_id=43114,
98
+ usdc_address="0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E",
99
+ usdc_decimals=6,
100
+ usdc_domain_name="USD Coin",
101
+ usdc_domain_version="2",
102
+ rpc_url="https://avalanche-c-chain-rpc.publicnode.com",
103
+ enabled=True,
104
+ )
105
+
106
+ # Celo
107
+ # NOTE: Celo uses 'USDC' (not 'USD Coin') for EIP-712 domain name
108
+ CELO = NetworkConfig(
109
+ name="celo",
110
+ display_name="Celo",
111
+ network_type=NetworkType.EVM,
112
+ chain_id=42220,
113
+ usdc_address="0xcebA9300f2b948710d2653dD7B07f33A8B32118C",
114
+ usdc_decimals=6,
115
+ usdc_domain_name="USDC", # Different from other chains!
116
+ usdc_domain_version="2",
117
+ rpc_url="https://forno.celo.org",
118
+ enabled=True,
119
+ )
120
+
121
+ # HyperEVM (Hyperliquid)
122
+ # NOTE: HyperEVM uses 'USDC' (not 'USD Coin') for EIP-712 domain name
123
+ HYPEREVM = NetworkConfig(
124
+ name="hyperevm",
125
+ display_name="HyperEVM",
126
+ network_type=NetworkType.EVM,
127
+ chain_id=999,
128
+ usdc_address="0xb88339CB7199b77E23DB6E890353E22632Ba630f",
129
+ usdc_decimals=6,
130
+ usdc_domain_name="USDC", # Different from other chains!
131
+ usdc_domain_version="2",
132
+ rpc_url="https://rpc.hyperliquid.xyz/evm",
133
+ enabled=True,
134
+ )
135
+
136
+ # Unichain
137
+ # NOTE: Unichain uses 'USDC' (not 'USD Coin') for EIP-712 domain name
138
+ UNICHAIN = NetworkConfig(
139
+ name="unichain",
140
+ display_name="Unichain",
141
+ network_type=NetworkType.EVM,
142
+ chain_id=130,
143
+ usdc_address="0x078d782b760474a361dda0af3839290b0ef57ad6",
144
+ usdc_decimals=6,
145
+ usdc_domain_name="USDC", # Different from other chains!
146
+ usdc_domain_version="2",
147
+ rpc_url="https://unichain-rpc.publicnode.com",
148
+ enabled=True,
149
+ )
150
+
151
+ # Monad
152
+ # NOTE: Monad uses 'USDC' (not 'USD Coin') for EIP-712 domain name
153
+ MONAD = NetworkConfig(
154
+ name="monad",
155
+ display_name="Monad",
156
+ network_type=NetworkType.EVM,
157
+ chain_id=143,
158
+ usdc_address="0x754704bc059f8c67012fed69bc8a327a5aafb603",
159
+ usdc_decimals=6,
160
+ usdc_domain_name="USDC", # Different from other chains!
161
+ usdc_domain_version="2",
162
+ rpc_url="https://rpc.monad.xyz",
163
+ enabled=True,
164
+ )
165
+
166
+ # =============================================================================
167
+ # Register all EVM networks
168
+ # =============================================================================
169
+
170
+ _EVM_NETWORKS = [
171
+ BASE,
172
+ ETHEREUM,
173
+ POLYGON,
174
+ ARBITRUM,
175
+ OPTIMISM,
176
+ AVALANCHE,
177
+ CELO,
178
+ HYPEREVM,
179
+ UNICHAIN,
180
+ MONAD,
181
+ ]
182
+
183
+ for network in _EVM_NETWORKS:
184
+ register_network(network)
185
+
186
+
187
+ def get_usdc_domain_name(network_name: str) -> str:
188
+ """
189
+ Get the correct EIP-712 domain name for USDC on a network.
190
+
191
+ Args:
192
+ network_name: Network identifier
193
+
194
+ Returns:
195
+ Domain name string ('USD Coin' or 'USDC')
196
+ """
197
+ # Networks that use 'USDC' instead of 'USD Coin'
198
+ usdc_domain_networks = {"celo", "hyperevm", "unichain", "monad"}
199
+
200
+ if network_name.lower() in usdc_domain_networks:
201
+ return "USDC"
202
+ return "USD Coin"
203
+
204
+
205
+ def get_token_decimals(network_name: str) -> int:
206
+ """
207
+ Get USDC token decimals for a network.
208
+
209
+ Args:
210
+ network_name: Network identifier
211
+
212
+ Returns:
213
+ Number of decimals (6 for all supported chains)
214
+ """
215
+ return 6