1- export type TokenAddressType = { sepolia : string ; [ key : string ] : string } ;
2-
3- const WETH : TokenAddressType = {
4- localhost : "0x7b79995e5f793A07Bc00c21412e50Ecae098E7f9" , //dummy
5- hardhat : "0x7b79995e5f793A07Bc00c21412e50Ecae098E7f9" , //dummy
6- sepolia : "0x7b79995e5f793A07Bc00c21412e50Ecae098E7f9" ,
7- "optimism-mainnet" : "0x4200000000000000000000000000000000000006" ,
8- "base-sepolia" : "0x4200000000000000000000000000000000000006" ,
9- "arb-sepolia" : "0x3031a6D5D9648BA5f50f656Cd4a1672E1167a34A" ,
10- arbitrumOne : "0x82aF49447D8a07e3bd95BD0d56f35241523fBab1" ,
1+ // Define supported networks and their tokens
2+ type NetworkTokens = {
3+ [ network : string ] : {
4+ tokens : {
5+ symbol : string ;
6+ address : string ;
7+ faucetUrl ?: string ;
8+ } [ ] ;
9+ } ;
1110} ;
1211
13- // LINK faucet for Sepolia: https://faucets.chain.link/
14- const DAI : TokenAddressType = {
15- localhost : "0x779877A7B0D9E8603169DdbD7836e478b4624789" ,
16- hardhat : "0x779877A7B0D9E8603169DdbD7836e478b4624789" ,
17- sepolia : "0x779877A7B0D9E8603169DdbD7836e478b4624789" ,
18- "optimism-mainnet" : "0xda10009cbd5d07dd0cecc66161fc93d7c9000da1" ,
19- "base-sepolia" : "0xE4aB69C077896252FAFBD49EFD26B5D171A32410" ,
20- "arb-sepolia" : "0xb1D4538B4571d411F07960EF2838Ce337FE1E80E" ,
21- arbitrumOne : "0xDA10009cBd5D07dd0CeCc66161FC93D7c9000da1" ,
12+ const NETWORK_TOKENS : NetworkTokens = {
13+ localhost : {
14+ tokens : [
15+ { symbol : "ETH" , address : "0x0000000000000000000000000000000000000000" } ,
16+ { symbol : "WETH" , address : "0x7b79995e5f793A07Bc00c21412e50Ecae098E7f9" } ,
17+ { symbol : "DAI" , address : "0x779877A7B0D9E8603169DdbD7836e478b4624789" } ,
18+ { symbol : "USDC" , address : "0x1c7D4B196Cb0C7B01d743Fbc6116a902379C7238" } ,
19+ ] ,
20+ } ,
21+ hardhat : {
22+ tokens : [ { symbol : "ETH" , address : "0x0000000000000000000000000000000000000000" } ] ,
23+ } ,
24+ sepolia : {
25+ tokens : [
26+ { symbol : "ETH" , address : "0x0000000000000000000000000000000000000000" } ,
27+ { symbol : "WETH" , address : "0x7b79995e5f793A07Bc00c21412e50Ecae098E7f9" } ,
28+ {
29+ symbol : "DAI" ,
30+ address : "0x779877A7B0D9E8603169DdbD7836e478b4624789" ,
31+ faucetUrl : "https://faucets.chain.link/" ,
32+ } ,
33+ {
34+ symbol : "USDC" ,
35+ address : "0x1c7D4B196Cb0C7B01d743Fbc6116a902379C7238" ,
36+ faucetUrl : "https://faucet.circle.com/" ,
37+ } ,
38+ ] ,
39+ } ,
40+ "optimism-mainnet" : {
41+ tokens : [
42+ { symbol : "ETH" , address : "0x0000000000000000000000000000000000000000" } ,
43+ { symbol : "WETH" , address : "0x4200000000000000000000000000000000000006" } ,
44+ { symbol : "DAI" , address : "0xda10009cbd5d07dd0cecc66161fc93d7c9000da1" } ,
45+ { symbol : "USDC" , address : "0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85" } ,
46+ ] ,
47+ } ,
48+ "base-sepolia" : {
49+ tokens : [
50+ { symbol : "ETH" , address : "0x0000000000000000000000000000000000000000" } ,
51+ { symbol : "WETH" , address : "0x4200000000000000000000000000000000000006" } ,
52+ { symbol : "DAI" , address : "0xE4aB69C077896252FAFBD49EFD26B5D171A32410" } ,
53+ { symbol : "USDC" , address : "0x036CbD53842c5426634e7929541eC2318f3dCF7e" } ,
54+ ] ,
55+ } ,
56+ "arb-sepolia" : {
57+ tokens : [
58+ { symbol : "ETH" , address : "0x0000000000000000000000000000000000000000" } ,
59+ { symbol : "WETH" , address : "0x3031a6D5D9648BA5f50f656Cd4a1672E1167a34A" } ,
60+ { symbol : "DAI" , address : "0xb1D4538B4571d411F07960EF2838Ce337FE1E80E" } ,
61+ { symbol : "USDC" , address : "0x75faf114eafb1BDbe2F0316DF893fd58CE46AA4d" } ,
62+ ] ,
63+ } ,
64+ arbitrumOne : {
65+ tokens : [
66+ { symbol : "ETH" , address : "0x0000000000000000000000000000000000000000" } ,
67+ { symbol : "WETH" , address : "0x82aF49447D8a07e3bd95BD0d56f35241523fBab1" } ,
68+ { symbol : "DAI" , address : "0xDA10009cBd5D07dd0CeCc66161FC93D7c9000da1" } ,
69+ { symbol : "USDC" , address : "0xaf88d065e77c8cC2239327C5EDb3A432268e5831" } ,
70+ ] ,
71+ } ,
72+ "celo-mainnet" : {
73+ //https://docs.celo.org/cel2/fee-currencies
74+ tokens : [
75+ {
76+ symbol : "CELO" ,
77+ address : "0x471EcE3750Da237f93B8E339c536989b8978a438" , // NO support for CELO as zero-address, as that breaks the marketplace flow on receiving and wrapping native tokens (no wrapper on Celo)
78+ } ,
79+ {
80+ symbol : "cUSD" ,
81+ address : "0x765DE816845861e75A25fCA122bb6898B8B1282a" ,
82+ } ,
83+ {
84+ symbol : "USDC" ,
85+ address : "0xcebA9300f2b948710d2653dD7B07f33A8B32118C" ,
86+ } ,
87+ {
88+ symbol : "USDT" ,
89+ address : "0x48065fbBE25f71C9282ddf5e1cD6D6A887483D5e" ,
90+ } ,
91+ ] ,
92+ } ,
2293} ;
2394
24- // USDC https://faucet.circle.com/
25- // https://developers.circle.com/stablecoins/docs/usdc-on-main-networks
26- const USDC : TokenAddressType = {
27- localhost : "0x1c7D4B196Cb0C7B01d743Fbc6116a902379C7238" ,
28- hardhat : "0x1c7D4B196Cb0C7B01d743Fbc6116a902379C7238" ,
29- sepolia : "0x1c7D4B196Cb0C7B01d743Fbc6116a902379C7238" ,
30- "optimism-mainnet" : "0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85" ,
31- "base-sepolia" : "0x036CbD53842c5426634e7929541eC2318f3dCF7e" ,
32- "arb-sepolia" : "0x75faf114eafb1BDbe2F0316DF893fd58CE46AA4d" ,
33- arbitrumOne : "0xaf88d065e77c8cC2239327C5EDb3A432268e5831" ,
95+ // New helper functions
96+ export const getSupportedTokens = ( network : string ) => {
97+ const networkConfig = NETWORK_TOKENS [ network ] ;
98+ if ( ! networkConfig ) {
99+ throw new Error ( `Network "${ network } " is not supported` ) ;
100+ }
101+ return networkConfig . tokens ;
34102} ;
35103
36- export const getTokenAddresses = ( network : string ) => {
37- return {
38- wethAddress : WETH [ network ] ,
39- usdceAddress : USDC [ network ] ,
40- daiAddress : DAI [ network ] ,
41- } ;
104+ export const getTokenAddress = ( network : string , symbol : string ) => {
105+ const tokens = getSupportedTokens ( network ) ;
106+ const token = tokens . find ( ( t ) => t . symbol === symbol ) ;
107+ if ( ! token ) {
108+ throw new Error ( `Token "${ symbol } " is not supported on network "${ network } "` ) ;
109+ }
110+ return token . address ;
42111} ;
43112
44113const ADMIN_ACCOUNT : { [ key : string ] : string } = {
@@ -47,7 +116,7 @@ const ADMIN_ACCOUNT: { [key: string]: string } = {
47116 sepolia : "0x4f37308832c6eFE5A74737955cBa96257d76De17" ,
48117 "base-sepolia" : "0xA2Cb9D926b090577AD45fC0F40C753BF369B82Ff" ,
49118 "optimism-mainnet" : "0x560adA72a80b4707e493cA8c3B7B7528930E7Be5" ,
50- celo : "0x14ae502FEF3843fF3a1735B3209D39B320130af9" ,
119+ " celo-mainnet" : "0x14ae502FEF3843fF3a1735B3209D39B320130af9" ,
51120 base : "0x14ae502FEF3843fF3a1735B3209D39B320130af9" ,
52121 arbitrumOne : "0x14ae502FEF3843fF3a1735B3209D39B320130af9" ,
53122 "arb-sepolia" : "0x5d36971451AE593685Cab8815d644f9B4B66Ec99" ,
@@ -69,7 +138,7 @@ const FEE_RECIPIENT: { [key: string]: string } = {
69138 sepolia : "0x4f37308832c6eFE5A74737955cBa96257d76De17" ,
70139 "base-sepolia" : "0xe518aED97D9d45174a06bB8EF663B4fB51330725" ,
71140 "optimism-mainnet" : "0xE7C4531ad8828794904D332a12702beC8ff1A498" ,
72- celo : "0xE7C4531ad8828794904D332a12702beC8ff1A498" ,
141+ " celo-mainnet" : "0xE7C4531ad8828794904D332a12702beC8ff1A498" ,
73142 base : "0xE7C4531ad8828794904D332a12702beC8ff1A498" ,
74143 arbitrumOne : "0xE7C4531ad8828794904D332a12702beC8ff1A498" ,
75144 "arb-sepolia" : "0x5d36971451AE593685Cab8815d644f9B4B66Ec99" ,
0 commit comments