@klappay/types 4.1.0 → 5.1.0

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.
@@ -6,7 +6,9 @@ var NETWORK_LABELS = {
6
6
  ethereum: "Ethereum",
7
7
  arbitrum: "Arbitrum",
8
8
  avalanche: "Avalanche",
9
- bnb: "BNB Chain"
9
+ bnb: "BNB Chain",
10
+ tron: "TRON",
11
+ arc: "Arc"
10
12
  };
11
13
  var NETWORK_EXPLORERS = {
12
14
  base: "https://basescan.org",
@@ -15,7 +17,9 @@ var NETWORK_EXPLORERS = {
15
17
  ethereum: "https://etherscan.io",
16
18
  arbitrum: "https://arbiscan.io",
17
19
  avalanche: "https://snowtrace.io",
18
- bnb: "https://bscscan.com"
20
+ bnb: "https://bscscan.com",
21
+ tron: "https://tronscan.org",
22
+ arc: "https://explorer.arc.io"
19
23
  };
20
24
  var EVM_NETWORKS = [
21
25
  "base",
@@ -24,7 +28,8 @@ var EVM_NETWORKS = [
24
28
  "ethereum",
25
29
  "arbitrum",
26
30
  "avalanche",
27
- "bnb"
31
+ "bnb",
32
+ "arc"
28
33
  ];
29
34
  var OPERATIONAL_NETWORKS = [
30
35
  "base",
@@ -33,7 +38,9 @@ var OPERATIONAL_NETWORKS = [
33
38
  "polygon",
34
39
  "ethereum",
35
40
  "avalanche",
36
- "bnb"
41
+ "bnb",
42
+ "arc",
43
+ "tron"
37
44
  ];
38
45
  var CHAIN_IDS = {
39
46
  base: { live: 8453, test: 84532 },
@@ -42,8 +49,43 @@ var CHAIN_IDS = {
42
49
  polygon: { live: 137 },
43
50
  arbitrum: { live: 42161 },
44
51
  avalanche: { live: 43114 },
45
- bnb: { live: 56 }
52
+ bnb: { live: 56 },
53
+ arc: { live: 5042, test: 5042002 }
46
54
  };
55
+ var NETWORK_FAMILIES = {
56
+ base: "evm-official",
57
+ optimism: "evm-official",
58
+ polygon: "evm-official",
59
+ ethereum: "evm-official",
60
+ arbitrum: "evm-official",
61
+ avalanche: "evm-official",
62
+ bnb: "evm-official",
63
+ tron: "tron",
64
+ arc: "arc"
65
+ };
66
+
67
+ // src/addresses.ts
68
+ import { z } from "zod";
69
+ var EVM_ADDRESS_REGEX = /^0x[0-9a-f]{40}$/i;
70
+ var TRON_ADDRESS_REGEX = /^T[1-9A-HJ-NP-Za-km-z]{33}$/;
71
+ function isEvmAddress(value) {
72
+ return EVM_ADDRESS_REGEX.test(value);
73
+ }
74
+ function isTronAddress(value) {
75
+ return TRON_ADDRESS_REGEX.test(value);
76
+ }
77
+ function isSplitAddress(value) {
78
+ return isEvmAddress(value) || isTronAddress(value);
79
+ }
80
+ function tronAddress(value) {
81
+ if (!isTronAddress(value)) throw new Error(`not a valid TRON address: ${value}`);
82
+ return value;
83
+ }
84
+ function addressesEqual(a, b) {
85
+ if (isEvmAddress(a) && isEvmAddress(b)) return a.toLowerCase() === b.toLowerCase();
86
+ return a === b;
87
+ }
88
+ var SplitAddressSchema = z.string().refine(isSplitAddress, "must be a valid EVM (0x...) or TRON (T...) address");
47
89
 
48
90
  // src/tokens.constants.ts
49
91
  var TOKEN_DECIMALS = 6;
@@ -64,7 +106,11 @@ var TOKEN_DEPLOYMENTS = {
64
106
  },
65
107
  arbitrum: { live: { address: "0xaf88d065e77c8cC2239327C5EDb3A432268e5831", decimals: 6 } },
66
108
  avalanche: { live: { address: "0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E", decimals: 6 } },
67
- bnb: { live: { address: "0x8AC76a51cc950d9822D68b83fE1Ad97B32Cd580d", decimals: 18 } }
109
+ bnb: { live: { address: "0x8AC76a51cc950d9822D68b83fE1Ad97B32Cd580d", decimals: 18 } },
110
+ arc: {
111
+ live: { address: "0x3600000000000000000000000000000000000000", decimals: 6 },
112
+ test: { address: "0x3600000000000000000000000000000000000000", decimals: 6 }
113
+ }
68
114
  },
69
115
  USDT: {
70
116
  base: { live: { address: "0xfde4C96c8593536E31F229EA8f37b2ADa2699bb2", decimals: 6 } },
@@ -73,7 +119,11 @@ var TOKEN_DEPLOYMENTS = {
73
119
  ethereum: { live: { address: "0xdAC17F958D2ee523a2206206994597C13D831ec7", decimals: 6 } },
74
120
  arbitrum: { live: { address: "0xFd086bC7CD5C481DCC9C85ebE478A1C0b69FCbb9", decimals: 6 } },
75
121
  avalanche: { live: { address: "0x9702230A8Ea53601f5cD2dc00fDBc13d4dF4A8c7", decimals: 6 } },
76
- bnb: { live: { address: "0x55d398326f99059fF775485246999027B3197955", decimals: 18 } }
122
+ bnb: { live: { address: "0x55d398326f99059fF775485246999027B3197955", decimals: 18 } },
123
+ tron: {
124
+ live: { address: tronAddress("TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t"), decimals: 6 },
125
+ test: { address: tronAddress("TXYZopYRdj2D9XRtbG411XZZ3kM5VkAeBf"), decimals: 6 }
126
+ }
77
127
  }
78
128
  };
79
129
  function getTokenDeployment(token, network, environment) {
@@ -85,7 +135,7 @@ function isPaymentDeploymentEnabled(token, network, environment) {
85
135
  }
86
136
  function deriveAddresses(deployments) {
87
137
  const addresses = {};
88
- for (const network of EVM_NETWORKS) {
138
+ for (const network of Object.keys(deployments)) {
89
139
  const byEnvironment = deployments[network];
90
140
  if (!byEnvironment) continue;
91
141
  const networkAddresses = {};
@@ -106,18 +156,53 @@ var TOKEN_ADDRESSES = {
106
156
  var ALT_TOKEN_DECIMALS = {
107
157
  ETH: 18,
108
158
  BNB: 18,
109
- MATIC: 18,
159
+ POL: 18,
110
160
  AVAX: 18,
111
- BTC: 8
161
+ BTC: 8,
162
+ LINK: 18,
163
+ ARB: 18,
164
+ OP: 18,
165
+ CBETH: 18
112
166
  };
113
167
  var ALT_TOKEN_ADDRESSES = {
114
- base: { ETH: "native", BTC: "0xcbB7C0000aB88B473b1f5aFd9ef808440eed33Bf" },
115
- optimism: { ETH: "native", BTC: "0x68f180fcCe6836688e9084f035309E29Bf0A2095" },
116
- ethereum: { ETH: "native", BTC: "0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599" },
117
- arbitrum: { ETH: "native", BTC: "0x2f2a2543B76A4166549F7aaB2e75Bef0aefC5B0f" },
118
- polygon: { MATIC: "native", BTC: "0x1BFD67037B42Cf73acF2047067bd4F2C47D9BfD6" },
119
- avalanche: { AVAX: "native" },
120
- bnb: { BNB: "native" }
168
+ base: {
169
+ ETH: "native",
170
+ BTC: "0xcbB7C0000aB88B473b1f5aFd9ef808440eed33Bf",
171
+ LINK: "0x88Fb150BDc53A65fe94Dea0c9BA0a6dAf8C6e196",
172
+ CBETH: "0x2Ae3F1Ec7F1F5012CFEab0185bfc7aa3cf0DEc22"
173
+ },
174
+ optimism: {
175
+ ETH: "native",
176
+ BTC: "0x68f180fcCe6836688e9084f035309E29Bf0A2095",
177
+ LINK: "0x350a791Bfc2C21F9Ed5d10980Dad2e2638ffa7f6",
178
+ OP: "0x4200000000000000000000000000000000000042"
179
+ },
180
+ ethereum: {
181
+ ETH: "native",
182
+ BTC: "0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599",
183
+ LINK: "0x514910771AF9Ca656af840dff83E8264EcF986CA"
184
+ },
185
+ arbitrum: {
186
+ ETH: "native",
187
+ BTC: "0x2f2a2543B76A4166549F7aaB2e75Bef0aefC5B0f",
188
+ LINK: "0xf97f4df75117a78c1A5a0DBb814Af92458539FB4",
189
+ ARB: "0x912CE59144191C1204E64559FE8253a0e49E6548"
190
+ },
191
+ polygon: {
192
+ POL: "native",
193
+ BTC: "0x1BFD67037B42Cf73acF2047067bd4F2C47D9BfD6",
194
+ LINK: "0xb0897686c545045aFc77CF20eC7A532E3120E0F1"
195
+ },
196
+ avalanche: {
197
+ AVAX: "native",
198
+ BTC: "0x2297aebd383787a160dd0d9f71508148769342e3",
199
+ LINK: "0x5947BB275c521040051D82396192181b413227A3"
200
+ },
201
+ bnb: { BNB: "native" },
202
+ tron: {},
203
+ arc: {
204
+ BTC: "0x171A4217b86A807A64eB94757Db6849fb4bDbAA0"
205
+ }
121
206
  };
122
207
 
123
208
  export {
@@ -126,6 +211,13 @@ export {
126
211
  EVM_NETWORKS,
127
212
  OPERATIONAL_NETWORKS,
128
213
  CHAIN_IDS,
214
+ NETWORK_FAMILIES,
215
+ isEvmAddress,
216
+ isTronAddress,
217
+ isSplitAddress,
218
+ tronAddress,
219
+ addressesEqual,
220
+ SplitAddressSchema,
129
221
  TOKEN_DECIMALS,
130
222
  TOKEN_DEPLOYMENTS,
131
223
  getTokenDeployment,
@@ -134,4 +226,4 @@ export {
134
226
  ALT_TOKEN_DECIMALS,
135
227
  ALT_TOKEN_ADDRESSES
136
228
  };
137
- //# sourceMappingURL=chunk-WKIOAEJ3.mjs.map
229
+ //# sourceMappingURL=chunk-UEXXRQL3.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/networks.constants.ts","../src/addresses.ts","../src/tokens.constants.ts","../src/alt-tokens.constants.ts"],"sourcesContent":["import type { Environment } from './environment'\nimport type { Network } from './networks'\n\nexport const NETWORK_LABELS: Record<Network, string> = {\n base: 'Base',\n optimism: 'Optimism',\n polygon: 'Polygon',\n ethereum: 'Ethereum',\n arbitrum: 'Arbitrum',\n avalanche: 'Avalanche',\n bnb: 'BNB Chain',\n tron: 'TRON',\n arc: 'Arc',\n}\n\nexport const NETWORK_EXPLORERS: Record<Network, string> = {\n base: 'https://basescan.org',\n optimism: 'https://optimistic.etherscan.io',\n polygon: 'https://polygonscan.com',\n ethereum: 'https://etherscan.io',\n arbitrum: 'https://arbiscan.io',\n avalanche: 'https://snowtrace.io',\n bnb: 'https://bscscan.com',\n tron: 'https://tronscan.org',\n arc: 'https://explorer.arc.io',\n}\n\nexport const EVM_NETWORKS = [\n 'base',\n 'optimism',\n 'polygon',\n 'ethereum',\n 'arbitrum',\n 'avalanche',\n 'bnb',\n 'arc',\n] as const\nexport type EvmNetwork = (typeof EVM_NETWORKS)[number]\n\nexport const OPERATIONAL_NETWORKS = [\n 'base',\n 'arbitrum',\n 'optimism',\n 'polygon',\n 'ethereum',\n 'avalanche',\n 'bnb',\n 'arc',\n 'tron',\n] as const\nexport type OperationalNetwork = (typeof OPERATIONAL_NETWORKS)[number]\n\nexport const CHAIN_IDS: Record<EvmNetwork, Partial<Record<Environment, number>>> = {\n base: { live: 8453, test: 84532 },\n optimism: { live: 10, test: 11155420 },\n ethereum: { live: 1, test: 11155111 },\n polygon: { live: 137 },\n arbitrum: { live: 42161 },\n avalanche: { live: 43114 },\n bnb: { live: 56 },\n arc: { live: 5042, test: 5042002 },\n}\n\nexport const NETWORK_FAMILIES: Record<Network, 'evm-official' | 'tron' | 'arc'> = {\n base: 'evm-official',\n optimism: 'evm-official',\n polygon: 'evm-official',\n ethereum: 'evm-official',\n arbitrum: 'evm-official',\n avalanche: 'evm-official',\n bnb: 'evm-official',\n tron: 'tron',\n arc: 'arc',\n}\nexport type NetworkFamily = (typeof NETWORK_FAMILIES)[Network]\n","import { z } from 'zod'\n\nexport type EvmAddress = `0x${string}`\nexport type TronAddress = string & { readonly __tronAddress: unique symbol }\n\nexport type SplitAddress = EvmAddress | TronAddress\n\nconst EVM_ADDRESS_REGEX = /^0x[0-9a-f]{40}$/i\nconst TRON_ADDRESS_REGEX = /^T[1-9A-HJ-NP-Za-km-z]{33}$/\n\nexport function isEvmAddress(value: string): value is EvmAddress {\n return EVM_ADDRESS_REGEX.test(value)\n}\n\nexport function isTronAddress(value: string): value is TronAddress {\n return TRON_ADDRESS_REGEX.test(value)\n}\n\nexport function isSplitAddress(value: string): value is SplitAddress {\n return isEvmAddress(value) || isTronAddress(value)\n}\n\nexport function tronAddress(value: string): TronAddress {\n if (!isTronAddress(value)) throw new Error(`not a valid TRON address: ${value}`)\n return value\n}\n\nexport function addressesEqual(a: string, b: string): boolean {\n if (isEvmAddress(a) && isEvmAddress(b)) return a.toLowerCase() === b.toLowerCase()\n return a === b\n}\n\nexport const SplitAddressSchema = z\n .string()\n .refine(isSplitAddress, 'must be a valid EVM (0x...) or TRON (T...) address')\n","import { type SplitAddress, tronAddress } from './addresses'\nimport type { Environment } from './environment'\nimport type { Network } from './networks'\nimport type { Token } from './tokens'\n\nexport const TOKEN_DECIMALS = 6\n\nexport type TokenDeployment = { address: SplitAddress; decimals: number }\n\ntype DeploymentsByNetwork = Partial<Record<Network, Partial<Record<Environment, TokenDeployment>>>>\ntype AddressesByNetwork = Partial<Record<Network, Partial<Record<Environment, SplitAddress>>>>\n\nexport const TOKEN_DEPLOYMENTS: Record<Token, DeploymentsByNetwork> = {\n USDC: {\n base: {\n live: { address: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913', decimals: 6 },\n test: { address: '0x036CbD53842c5426634e7929541eC2318f3dCF7e', decimals: 6 },\n },\n optimism: {\n live: { address: '0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85', decimals: 6 },\n test: { address: '0x5fd84259d66Cd46123540766Be93DFE6D43130D7', decimals: 6 },\n },\n polygon: { live: { address: '0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359', decimals: 6 } },\n ethereum: {\n live: { address: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48', decimals: 6 },\n test: { address: '0x1c7D4B196Cb0C7B01d743Fbc6116a902379C7238', decimals: 6 },\n },\n arbitrum: { live: { address: '0xaf88d065e77c8cC2239327C5EDb3A432268e5831', decimals: 6 } },\n avalanche: { live: { address: '0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E', decimals: 6 } },\n bnb: { live: { address: '0x8AC76a51cc950d9822D68b83fE1Ad97B32Cd580d', decimals: 18 } },\n arc: {\n live: { address: '0x3600000000000000000000000000000000000000', decimals: 6 },\n test: { address: '0x3600000000000000000000000000000000000000', decimals: 6 },\n },\n },\n USDT: {\n base: { live: { address: '0xfde4C96c8593536E31F229EA8f37b2ADa2699bb2', decimals: 6 } },\n optimism: { live: { address: '0x94b008aA00579c1307B0EF2c499aD98a8ce58e58', decimals: 6 } },\n polygon: { live: { address: '0xc2132D05D31c914a87C6611C10748AEb04B58e8F', decimals: 6 } },\n ethereum: { live: { address: '0xdAC17F958D2ee523a2206206994597C13D831ec7', decimals: 6 } },\n arbitrum: { live: { address: '0xFd086bC7CD5C481DCC9C85ebE478A1C0b69FCbb9', decimals: 6 } },\n avalanche: { live: { address: '0x9702230A8Ea53601f5cD2dc00fDBc13d4dF4A8c7', decimals: 6 } },\n bnb: { live: { address: '0x55d398326f99059fF775485246999027B3197955', decimals: 18 } },\n tron: {\n live: { address: tronAddress('TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t'), decimals: 6 },\n test: { address: tronAddress('TXYZopYRdj2D9XRtbG411XZZ3kM5VkAeBf'), decimals: 6 },\n },\n },\n}\n\nexport function getTokenDeployment(\n token: Token,\n network: Network,\n environment: Environment,\n): TokenDeployment | undefined {\n return TOKEN_DEPLOYMENTS[token][network]?.[environment]\n}\n\nexport function isPaymentDeploymentEnabled(\n token: Token,\n network: Network,\n environment: Environment,\n): boolean {\n if (network === 'bnb' && environment === 'live') return false\n return getTokenDeployment(token, network, environment) !== undefined\n}\n\nfunction deriveAddresses(deployments: DeploymentsByNetwork): AddressesByNetwork {\n const addresses: AddressesByNetwork = {}\n for (const network of Object.keys(deployments) as Network[]) {\n const byEnvironment = deployments[network]\n if (!byEnvironment) continue\n const networkAddresses: Partial<Record<Environment, SplitAddress>> = {}\n for (const environment of ['live', 'test'] as const) {\n const deployment = byEnvironment[environment]\n if (deployment) networkAddresses[environment] = deployment.address\n }\n addresses[network] = networkAddresses\n }\n return addresses\n}\n\nexport const TOKEN_ADDRESSES: Record<Token, AddressesByNetwork> = {\n USDC: deriveAddresses(TOKEN_DEPLOYMENTS.USDC),\n USDT: deriveAddresses(TOKEN_DEPLOYMENTS.USDT),\n}\n","import type { AltToken } from './alt-tokens'\nimport type { Network } from './networks'\n\nexport const ALT_TOKEN_DECIMALS: Record<AltToken, number> = {\n ETH: 18,\n BNB: 18,\n POL: 18,\n AVAX: 18,\n BTC: 8,\n LINK: 18,\n ARB: 18,\n OP: 18,\n CBETH: 18,\n}\n\nexport const ALT_TOKEN_ADDRESSES: Record<\n Network,\n Partial<Record<AltToken, 'native' | `0x${string}`>>\n> = {\n base: {\n ETH: 'native',\n BTC: '0xcbB7C0000aB88B473b1f5aFd9ef808440eed33Bf',\n LINK: '0x88Fb150BDc53A65fe94Dea0c9BA0a6dAf8C6e196',\n CBETH: '0x2Ae3F1Ec7F1F5012CFEab0185bfc7aa3cf0DEc22',\n },\n optimism: {\n ETH: 'native',\n BTC: '0x68f180fcCe6836688e9084f035309E29Bf0A2095',\n LINK: '0x350a791Bfc2C21F9Ed5d10980Dad2e2638ffa7f6',\n OP: '0x4200000000000000000000000000000000000042',\n },\n ethereum: {\n ETH: 'native',\n BTC: '0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599',\n LINK: '0x514910771AF9Ca656af840dff83E8264EcF986CA',\n },\n arbitrum: {\n ETH: 'native',\n BTC: '0x2f2a2543B76A4166549F7aaB2e75Bef0aefC5B0f',\n LINK: '0xf97f4df75117a78c1A5a0DBb814Af92458539FB4',\n ARB: '0x912CE59144191C1204E64559FE8253a0e49E6548',\n },\n polygon: {\n POL: 'native',\n BTC: '0x1BFD67037B42Cf73acF2047067bd4F2C47D9BfD6',\n LINK: '0xb0897686c545045aFc77CF20eC7A532E3120E0F1',\n },\n avalanche: {\n AVAX: 'native',\n BTC: '0x2297aebd383787a160dd0d9f71508148769342e3',\n LINK: '0x5947BB275c521040051D82396192181b413227A3',\n },\n bnb: { BNB: 'native' },\n tron: {},\n arc: {\n BTC: '0x171A4217b86A807A64eB94757Db6849fb4bDbAA0',\n },\n}\n"],"mappings":"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","names":[]}
@@ -0,0 +1,64 @@
1
+ import { z } from 'zod';
2
+
3
+ declare const EnvironmentSchema: z.ZodEnum<["live", "test"]>;
4
+ type Environment = z.infer<typeof EnvironmentSchema>;
5
+
6
+ declare const NetworkSchema: z.ZodEnum<["base", "optimism", "polygon", "ethereum", "arbitrum", "avalanche", "bnb", "tron", "arc"]>;
7
+ type Network = z.infer<typeof NetworkSchema>;
8
+
9
+ declare const NETWORK_LABELS: Record<Network, string>;
10
+ declare const NETWORK_EXPLORERS: Record<Network, string>;
11
+ declare const EVM_NETWORKS: readonly ["base", "optimism", "polygon", "ethereum", "arbitrum", "avalanche", "bnb", "arc"];
12
+ type EvmNetwork = (typeof EVM_NETWORKS)[number];
13
+ declare const OPERATIONAL_NETWORKS: readonly ["base", "arbitrum", "optimism", "polygon", "ethereum", "avalanche", "bnb", "arc", "tron"];
14
+ type OperationalNetwork = (typeof OPERATIONAL_NETWORKS)[number];
15
+ declare const CHAIN_IDS: Record<EvmNetwork, Partial<Record<Environment, number>>>;
16
+ declare const NETWORK_FAMILIES: Record<Network, 'evm-official' | 'tron' | 'arc'>;
17
+ type NetworkFamily = (typeof NETWORK_FAMILIES)[Network];
18
+
19
+ type EvmAddress = `0x${string}`;
20
+ type TronAddress = string & {
21
+ readonly __tronAddress: unique symbol;
22
+ };
23
+ type SplitAddress = EvmAddress | TronAddress;
24
+ declare function isEvmAddress(value: string): value is EvmAddress;
25
+ declare function isTronAddress(value: string): value is TronAddress;
26
+ declare function isSplitAddress(value: string): value is SplitAddress;
27
+ declare function tronAddress(value: string): TronAddress;
28
+ declare function addressesEqual(a: string, b: string): boolean;
29
+ declare const SplitAddressSchema: z.ZodEffects<z.ZodString, SplitAddress, string>;
30
+
31
+ declare const TokenSchema: z.ZodEnum<["USDC", "USDT"]>;
32
+ type Token = z.infer<typeof TokenSchema>;
33
+
34
+ declare const TOKEN_DECIMALS = 6;
35
+ type TokenDeployment = {
36
+ address: SplitAddress;
37
+ decimals: number;
38
+ };
39
+ type DeploymentsByNetwork = Partial<Record<Network, Partial<Record<Environment, TokenDeployment>>>>;
40
+ type AddressesByNetwork = Partial<Record<Network, Partial<Record<Environment, SplitAddress>>>>;
41
+ declare const TOKEN_DEPLOYMENTS: Record<Token, DeploymentsByNetwork>;
42
+ declare function getTokenDeployment(token: Token, network: Network, environment: Environment): TokenDeployment | undefined;
43
+ declare function isPaymentDeploymentEnabled(token: Token, network: Network, environment: Environment): boolean;
44
+ declare const TOKEN_ADDRESSES: Record<Token, AddressesByNetwork>;
45
+
46
+ declare const AltTokenSchema: z.ZodEnum<["ETH", "BNB", "POL", "AVAX", "BTC", "LINK", "ARB", "OP", "CBETH"]>;
47
+ type AltToken = z.infer<typeof AltTokenSchema>;
48
+ declare const SwapAlternativeSchema: z.ZodObject<{
49
+ token: z.ZodEnum<["ETH", "BNB", "POL", "AVAX", "BTC", "LINK", "ARB", "OP", "CBETH"]>;
50
+ network: z.ZodEnum<["base", "optimism", "polygon", "ethereum", "arbitrum", "avalanche", "bnb", "tron", "arc"]>;
51
+ }, "strip", z.ZodTypeAny, {
52
+ token: "ETH" | "BNB" | "POL" | "AVAX" | "BTC" | "LINK" | "ARB" | "OP" | "CBETH";
53
+ network: "base" | "optimism" | "polygon" | "ethereum" | "arbitrum" | "avalanche" | "bnb" | "tron" | "arc";
54
+ }, {
55
+ token: "ETH" | "BNB" | "POL" | "AVAX" | "BTC" | "LINK" | "ARB" | "OP" | "CBETH";
56
+ network: "base" | "optimism" | "polygon" | "ethereum" | "arbitrum" | "avalanche" | "bnb" | "tron" | "arc";
57
+ }>;
58
+ type SwapAlternative = z.infer<typeof SwapAlternativeSchema>;
59
+ declare function listSwapAlternatives(networks: readonly Network[]): SwapAlternative[];
60
+
61
+ declare const ALT_TOKEN_DECIMALS: Record<AltToken, number>;
62
+ declare const ALT_TOKEN_ADDRESSES: Record<Network, Partial<Record<AltToken, 'native' | `0x${string}`>>>;
63
+
64
+ export { ALT_TOKEN_ADDRESSES as A, isSplitAddress as B, CHAIN_IDS as C, isTronAddress as D, EVM_NETWORKS as E, listSwapAlternatives as F, tronAddress as G, NETWORK_EXPLORERS as N, OPERATIONAL_NETWORKS as O, type SplitAddress as S, TOKEN_ADDRESSES as T, ALT_TOKEN_DECIMALS as a, type AltToken as b, AltTokenSchema as c, type Environment as d, EnvironmentSchema as e, type EvmAddress as f, type EvmNetwork as g, NETWORK_FAMILIES as h, NETWORK_LABELS as i, type Network as j, type NetworkFamily as k, NetworkSchema as l, type OperationalNetwork as m, SplitAddressSchema as n, type SwapAlternative as o, SwapAlternativeSchema as p, TOKEN_DECIMALS as q, TOKEN_DEPLOYMENTS as r, type Token as s, type TokenDeployment as t, TokenSchema as u, type TronAddress as v, addressesEqual as w, getTokenDeployment as x, isEvmAddress as y, isPaymentDeploymentEnabled as z };
@@ -0,0 +1,64 @@
1
+ import { z } from 'zod';
2
+
3
+ declare const EnvironmentSchema: z.ZodEnum<["live", "test"]>;
4
+ type Environment = z.infer<typeof EnvironmentSchema>;
5
+
6
+ declare const NetworkSchema: z.ZodEnum<["base", "optimism", "polygon", "ethereum", "arbitrum", "avalanche", "bnb", "tron", "arc"]>;
7
+ type Network = z.infer<typeof NetworkSchema>;
8
+
9
+ declare const NETWORK_LABELS: Record<Network, string>;
10
+ declare const NETWORK_EXPLORERS: Record<Network, string>;
11
+ declare const EVM_NETWORKS: readonly ["base", "optimism", "polygon", "ethereum", "arbitrum", "avalanche", "bnb", "arc"];
12
+ type EvmNetwork = (typeof EVM_NETWORKS)[number];
13
+ declare const OPERATIONAL_NETWORKS: readonly ["base", "arbitrum", "optimism", "polygon", "ethereum", "avalanche", "bnb", "arc", "tron"];
14
+ type OperationalNetwork = (typeof OPERATIONAL_NETWORKS)[number];
15
+ declare const CHAIN_IDS: Record<EvmNetwork, Partial<Record<Environment, number>>>;
16
+ declare const NETWORK_FAMILIES: Record<Network, 'evm-official' | 'tron' | 'arc'>;
17
+ type NetworkFamily = (typeof NETWORK_FAMILIES)[Network];
18
+
19
+ type EvmAddress = `0x${string}`;
20
+ type TronAddress = string & {
21
+ readonly __tronAddress: unique symbol;
22
+ };
23
+ type SplitAddress = EvmAddress | TronAddress;
24
+ declare function isEvmAddress(value: string): value is EvmAddress;
25
+ declare function isTronAddress(value: string): value is TronAddress;
26
+ declare function isSplitAddress(value: string): value is SplitAddress;
27
+ declare function tronAddress(value: string): TronAddress;
28
+ declare function addressesEqual(a: string, b: string): boolean;
29
+ declare const SplitAddressSchema: z.ZodEffects<z.ZodString, SplitAddress, string>;
30
+
31
+ declare const TokenSchema: z.ZodEnum<["USDC", "USDT"]>;
32
+ type Token = z.infer<typeof TokenSchema>;
33
+
34
+ declare const TOKEN_DECIMALS = 6;
35
+ type TokenDeployment = {
36
+ address: SplitAddress;
37
+ decimals: number;
38
+ };
39
+ type DeploymentsByNetwork = Partial<Record<Network, Partial<Record<Environment, TokenDeployment>>>>;
40
+ type AddressesByNetwork = Partial<Record<Network, Partial<Record<Environment, SplitAddress>>>>;
41
+ declare const TOKEN_DEPLOYMENTS: Record<Token, DeploymentsByNetwork>;
42
+ declare function getTokenDeployment(token: Token, network: Network, environment: Environment): TokenDeployment | undefined;
43
+ declare function isPaymentDeploymentEnabled(token: Token, network: Network, environment: Environment): boolean;
44
+ declare const TOKEN_ADDRESSES: Record<Token, AddressesByNetwork>;
45
+
46
+ declare const AltTokenSchema: z.ZodEnum<["ETH", "BNB", "POL", "AVAX", "BTC", "LINK", "ARB", "OP", "CBETH"]>;
47
+ type AltToken = z.infer<typeof AltTokenSchema>;
48
+ declare const SwapAlternativeSchema: z.ZodObject<{
49
+ token: z.ZodEnum<["ETH", "BNB", "POL", "AVAX", "BTC", "LINK", "ARB", "OP", "CBETH"]>;
50
+ network: z.ZodEnum<["base", "optimism", "polygon", "ethereum", "arbitrum", "avalanche", "bnb", "tron", "arc"]>;
51
+ }, "strip", z.ZodTypeAny, {
52
+ token: "ETH" | "BNB" | "POL" | "AVAX" | "BTC" | "LINK" | "ARB" | "OP" | "CBETH";
53
+ network: "base" | "optimism" | "polygon" | "ethereum" | "arbitrum" | "avalanche" | "bnb" | "tron" | "arc";
54
+ }, {
55
+ token: "ETH" | "BNB" | "POL" | "AVAX" | "BTC" | "LINK" | "ARB" | "OP" | "CBETH";
56
+ network: "base" | "optimism" | "polygon" | "ethereum" | "arbitrum" | "avalanche" | "bnb" | "tron" | "arc";
57
+ }>;
58
+ type SwapAlternative = z.infer<typeof SwapAlternativeSchema>;
59
+ declare function listSwapAlternatives(networks: readonly Network[]): SwapAlternative[];
60
+
61
+ declare const ALT_TOKEN_DECIMALS: Record<AltToken, number>;
62
+ declare const ALT_TOKEN_ADDRESSES: Record<Network, Partial<Record<AltToken, 'native' | `0x${string}`>>>;
63
+
64
+ export { ALT_TOKEN_ADDRESSES as A, isSplitAddress as B, CHAIN_IDS as C, isTronAddress as D, EVM_NETWORKS as E, listSwapAlternatives as F, tronAddress as G, NETWORK_EXPLORERS as N, OPERATIONAL_NETWORKS as O, type SplitAddress as S, TOKEN_ADDRESSES as T, ALT_TOKEN_DECIMALS as a, type AltToken as b, AltTokenSchema as c, type Environment as d, EnvironmentSchema as e, type EvmAddress as f, type EvmNetwork as g, NETWORK_FAMILIES as h, NETWORK_LABELS as i, type Network as j, type NetworkFamily as k, NetworkSchema as l, type OperationalNetwork as m, SplitAddressSchema as n, type SwapAlternative as o, SwapAlternativeSchema as p, TOKEN_DECIMALS as q, TOKEN_DEPLOYMENTS as r, type Token as s, type TokenDeployment as t, TokenSchema as u, type TronAddress as v, addressesEqual as w, getTokenDeployment as x, isEvmAddress as y, isPaymentDeploymentEnabled as z };
@@ -1,2 +1,2 @@
1
- export { A as ALT_TOKEN_ADDRESSES, a as ALT_TOKEN_DECIMALS, C as CHAIN_IDS, E as EVM_NETWORKS, f as EvmNetwork, N as NETWORK_EXPLORERS, g as NETWORK_LABELS, O as OPERATIONAL_NETWORKS, j as OperationalNetwork, T as TOKEN_ADDRESSES, l as TOKEN_DECIMALS, m as TOKEN_DEPLOYMENTS, o as TokenDeployment, q as getTokenDeployment, r as isPaymentDeploymentEnabled } from './constants-021Ybu31.mjs';
1
+ export { A as ALT_TOKEN_ADDRESSES, a as ALT_TOKEN_DECIMALS, C as CHAIN_IDS, E as EVM_NETWORKS, g as EvmNetwork, N as NETWORK_EXPLORERS, h as NETWORK_FAMILIES, i as NETWORK_LABELS, k as NetworkFamily, O as OPERATIONAL_NETWORKS, m as OperationalNetwork, T as TOKEN_ADDRESSES, q as TOKEN_DECIMALS, r as TOKEN_DEPLOYMENTS, t as TokenDeployment, x as getTokenDeployment, z as isPaymentDeploymentEnabled } from './constants-Cs8wjvTI.mjs';
2
2
  import 'zod';
@@ -1,2 +1,2 @@
1
- export { A as ALT_TOKEN_ADDRESSES, a as ALT_TOKEN_DECIMALS, C as CHAIN_IDS, E as EVM_NETWORKS, f as EvmNetwork, N as NETWORK_EXPLORERS, g as NETWORK_LABELS, O as OPERATIONAL_NETWORKS, j as OperationalNetwork, T as TOKEN_ADDRESSES, l as TOKEN_DECIMALS, m as TOKEN_DEPLOYMENTS, o as TokenDeployment, q as getTokenDeployment, r as isPaymentDeploymentEnabled } from './constants-021Ybu31.js';
1
+ export { A as ALT_TOKEN_ADDRESSES, a as ALT_TOKEN_DECIMALS, C as CHAIN_IDS, E as EVM_NETWORKS, g as EvmNetwork, N as NETWORK_EXPLORERS, h as NETWORK_FAMILIES, i as NETWORK_LABELS, k as NetworkFamily, O as OPERATIONAL_NETWORKS, m as OperationalNetwork, T as TOKEN_ADDRESSES, q as TOKEN_DECIMALS, r as TOKEN_DEPLOYMENTS, t as TokenDeployment, x as getTokenDeployment, z as isPaymentDeploymentEnabled } from './constants-Cs8wjvTI.js';
2
2
  import 'zod';
package/dist/constants.js CHANGED
@@ -25,6 +25,7 @@ __export(constants_exports, {
25
25
  CHAIN_IDS: () => CHAIN_IDS,
26
26
  EVM_NETWORKS: () => EVM_NETWORKS,
27
27
  NETWORK_EXPLORERS: () => NETWORK_EXPLORERS,
28
+ NETWORK_FAMILIES: () => NETWORK_FAMILIES,
28
29
  NETWORK_LABELS: () => NETWORK_LABELS,
29
30
  OPERATIONAL_NETWORKS: () => OPERATIONAL_NETWORKS,
30
31
  TOKEN_ADDRESSES: () => TOKEN_ADDRESSES,
@@ -43,7 +44,9 @@ var NETWORK_LABELS = {
43
44
  ethereum: "Ethereum",
44
45
  arbitrum: "Arbitrum",
45
46
  avalanche: "Avalanche",
46
- bnb: "BNB Chain"
47
+ bnb: "BNB Chain",
48
+ tron: "TRON",
49
+ arc: "Arc"
47
50
  };
48
51
  var NETWORK_EXPLORERS = {
49
52
  base: "https://basescan.org",
@@ -52,7 +55,9 @@ var NETWORK_EXPLORERS = {
52
55
  ethereum: "https://etherscan.io",
53
56
  arbitrum: "https://arbiscan.io",
54
57
  avalanche: "https://snowtrace.io",
55
- bnb: "https://bscscan.com"
58
+ bnb: "https://bscscan.com",
59
+ tron: "https://tronscan.org",
60
+ arc: "https://explorer.arc.io"
56
61
  };
57
62
  var EVM_NETWORKS = [
58
63
  "base",
@@ -61,7 +66,8 @@ var EVM_NETWORKS = [
61
66
  "ethereum",
62
67
  "arbitrum",
63
68
  "avalanche",
64
- "bnb"
69
+ "bnb",
70
+ "arc"
65
71
  ];
66
72
  var OPERATIONAL_NETWORKS = [
67
73
  "base",
@@ -70,7 +76,9 @@ var OPERATIONAL_NETWORKS = [
70
76
  "polygon",
71
77
  "ethereum",
72
78
  "avalanche",
73
- "bnb"
79
+ "bnb",
80
+ "arc",
81
+ "tron"
74
82
  ];
75
83
  var CHAIN_IDS = {
76
84
  base: { live: 8453, test: 84532 },
@@ -79,8 +87,39 @@ var CHAIN_IDS = {
79
87
  polygon: { live: 137 },
80
88
  arbitrum: { live: 42161 },
81
89
  avalanche: { live: 43114 },
82
- bnb: { live: 56 }
90
+ bnb: { live: 56 },
91
+ arc: { live: 5042, test: 5042002 }
83
92
  };
93
+ var NETWORK_FAMILIES = {
94
+ base: "evm-official",
95
+ optimism: "evm-official",
96
+ polygon: "evm-official",
97
+ ethereum: "evm-official",
98
+ arbitrum: "evm-official",
99
+ avalanche: "evm-official",
100
+ bnb: "evm-official",
101
+ tron: "tron",
102
+ arc: "arc"
103
+ };
104
+
105
+ // src/addresses.ts
106
+ var import_zod = require("zod");
107
+ var EVM_ADDRESS_REGEX = /^0x[0-9a-f]{40}$/i;
108
+ var TRON_ADDRESS_REGEX = /^T[1-9A-HJ-NP-Za-km-z]{33}$/;
109
+ function isEvmAddress(value) {
110
+ return EVM_ADDRESS_REGEX.test(value);
111
+ }
112
+ function isTronAddress(value) {
113
+ return TRON_ADDRESS_REGEX.test(value);
114
+ }
115
+ function isSplitAddress(value) {
116
+ return isEvmAddress(value) || isTronAddress(value);
117
+ }
118
+ function tronAddress(value) {
119
+ if (!isTronAddress(value)) throw new Error(`not a valid TRON address: ${value}`);
120
+ return value;
121
+ }
122
+ var SplitAddressSchema = import_zod.z.string().refine(isSplitAddress, "must be a valid EVM (0x...) or TRON (T...) address");
84
123
 
85
124
  // src/tokens.constants.ts
86
125
  var TOKEN_DECIMALS = 6;
@@ -101,7 +140,11 @@ var TOKEN_DEPLOYMENTS = {
101
140
  },
102
141
  arbitrum: { live: { address: "0xaf88d065e77c8cC2239327C5EDb3A432268e5831", decimals: 6 } },
103
142
  avalanche: { live: { address: "0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E", decimals: 6 } },
104
- bnb: { live: { address: "0x8AC76a51cc950d9822D68b83fE1Ad97B32Cd580d", decimals: 18 } }
143
+ bnb: { live: { address: "0x8AC76a51cc950d9822D68b83fE1Ad97B32Cd580d", decimals: 18 } },
144
+ arc: {
145
+ live: { address: "0x3600000000000000000000000000000000000000", decimals: 6 },
146
+ test: { address: "0x3600000000000000000000000000000000000000", decimals: 6 }
147
+ }
105
148
  },
106
149
  USDT: {
107
150
  base: { live: { address: "0xfde4C96c8593536E31F229EA8f37b2ADa2699bb2", decimals: 6 } },
@@ -110,7 +153,11 @@ var TOKEN_DEPLOYMENTS = {
110
153
  ethereum: { live: { address: "0xdAC17F958D2ee523a2206206994597C13D831ec7", decimals: 6 } },
111
154
  arbitrum: { live: { address: "0xFd086bC7CD5C481DCC9C85ebE478A1C0b69FCbb9", decimals: 6 } },
112
155
  avalanche: { live: { address: "0x9702230A8Ea53601f5cD2dc00fDBc13d4dF4A8c7", decimals: 6 } },
113
- bnb: { live: { address: "0x55d398326f99059fF775485246999027B3197955", decimals: 18 } }
156
+ bnb: { live: { address: "0x55d398326f99059fF775485246999027B3197955", decimals: 18 } },
157
+ tron: {
158
+ live: { address: tronAddress("TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t"), decimals: 6 },
159
+ test: { address: tronAddress("TXYZopYRdj2D9XRtbG411XZZ3kM5VkAeBf"), decimals: 6 }
160
+ }
114
161
  }
115
162
  };
116
163
  function getTokenDeployment(token, network, environment) {
@@ -122,7 +169,7 @@ function isPaymentDeploymentEnabled(token, network, environment) {
122
169
  }
123
170
  function deriveAddresses(deployments) {
124
171
  const addresses = {};
125
- for (const network of EVM_NETWORKS) {
172
+ for (const network of Object.keys(deployments)) {
126
173
  const byEnvironment = deployments[network];
127
174
  if (!byEnvironment) continue;
128
175
  const networkAddresses = {};
@@ -143,18 +190,53 @@ var TOKEN_ADDRESSES = {
143
190
  var ALT_TOKEN_DECIMALS = {
144
191
  ETH: 18,
145
192
  BNB: 18,
146
- MATIC: 18,
193
+ POL: 18,
147
194
  AVAX: 18,
148
- BTC: 8
195
+ BTC: 8,
196
+ LINK: 18,
197
+ ARB: 18,
198
+ OP: 18,
199
+ CBETH: 18
149
200
  };
150
201
  var ALT_TOKEN_ADDRESSES = {
151
- base: { ETH: "native", BTC: "0xcbB7C0000aB88B473b1f5aFd9ef808440eed33Bf" },
152
- optimism: { ETH: "native", BTC: "0x68f180fcCe6836688e9084f035309E29Bf0A2095" },
153
- ethereum: { ETH: "native", BTC: "0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599" },
154
- arbitrum: { ETH: "native", BTC: "0x2f2a2543B76A4166549F7aaB2e75Bef0aefC5B0f" },
155
- polygon: { MATIC: "native", BTC: "0x1BFD67037B42Cf73acF2047067bd4F2C47D9BfD6" },
156
- avalanche: { AVAX: "native" },
157
- bnb: { BNB: "native" }
202
+ base: {
203
+ ETH: "native",
204
+ BTC: "0xcbB7C0000aB88B473b1f5aFd9ef808440eed33Bf",
205
+ LINK: "0x88Fb150BDc53A65fe94Dea0c9BA0a6dAf8C6e196",
206
+ CBETH: "0x2Ae3F1Ec7F1F5012CFEab0185bfc7aa3cf0DEc22"
207
+ },
208
+ optimism: {
209
+ ETH: "native",
210
+ BTC: "0x68f180fcCe6836688e9084f035309E29Bf0A2095",
211
+ LINK: "0x350a791Bfc2C21F9Ed5d10980Dad2e2638ffa7f6",
212
+ OP: "0x4200000000000000000000000000000000000042"
213
+ },
214
+ ethereum: {
215
+ ETH: "native",
216
+ BTC: "0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599",
217
+ LINK: "0x514910771AF9Ca656af840dff83E8264EcF986CA"
218
+ },
219
+ arbitrum: {
220
+ ETH: "native",
221
+ BTC: "0x2f2a2543B76A4166549F7aaB2e75Bef0aefC5B0f",
222
+ LINK: "0xf97f4df75117a78c1A5a0DBb814Af92458539FB4",
223
+ ARB: "0x912CE59144191C1204E64559FE8253a0e49E6548"
224
+ },
225
+ polygon: {
226
+ POL: "native",
227
+ BTC: "0x1BFD67037B42Cf73acF2047067bd4F2C47D9BfD6",
228
+ LINK: "0xb0897686c545045aFc77CF20eC7A532E3120E0F1"
229
+ },
230
+ avalanche: {
231
+ AVAX: "native",
232
+ BTC: "0x2297aebd383787a160dd0d9f71508148769342e3",
233
+ LINK: "0x5947BB275c521040051D82396192181b413227A3"
234
+ },
235
+ bnb: { BNB: "native" },
236
+ tron: {},
237
+ arc: {
238
+ BTC: "0x171A4217b86A807A64eB94757Db6849fb4bDbAA0"
239
+ }
158
240
  };
159
241
  // Annotate the CommonJS export names for ESM import in node:
160
242
  0 && (module.exports = {
@@ -163,6 +245,7 @@ var ALT_TOKEN_ADDRESSES = {
163
245
  CHAIN_IDS,
164
246
  EVM_NETWORKS,
165
247
  NETWORK_EXPLORERS,
248
+ NETWORK_FAMILIES,
166
249
  NETWORK_LABELS,
167
250
  OPERATIONAL_NETWORKS,
168
251
  TOKEN_ADDRESSES,
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/constants.ts","../src/networks.constants.ts","../src/tokens.constants.ts","../src/alt-tokens.constants.ts"],"sourcesContent":["export * from './networks.constants'\nexport * from './tokens.constants'\nexport * from './alt-tokens.constants'\n","import type { Environment } from './environment'\nimport type { Network } from './networks'\n\nexport const NETWORK_LABELS: Record<Network, string> = {\n base: 'Base',\n optimism: 'Optimism',\n polygon: 'Polygon',\n ethereum: 'Ethereum',\n arbitrum: 'Arbitrum',\n avalanche: 'Avalanche',\n bnb: 'BNB Chain',\n}\n\nexport const NETWORK_EXPLORERS: Record<Network, string> = {\n base: 'https://basescan.org',\n optimism: 'https://optimistic.etherscan.io',\n polygon: 'https://polygonscan.com',\n ethereum: 'https://etherscan.io',\n arbitrum: 'https://arbiscan.io',\n avalanche: 'https://snowtrace.io',\n bnb: 'https://bscscan.com',\n}\n\nexport const EVM_NETWORKS = [\n 'base',\n 'optimism',\n 'polygon',\n 'ethereum',\n 'arbitrum',\n 'avalanche',\n 'bnb',\n] as const\nexport type EvmNetwork = (typeof EVM_NETWORKS)[number]\n\nexport const OPERATIONAL_NETWORKS = [\n 'base',\n 'arbitrum',\n 'optimism',\n 'polygon',\n 'ethereum',\n 'avalanche',\n 'bnb',\n] as const\nexport type OperationalNetwork = (typeof OPERATIONAL_NETWORKS)[number]\n\nexport const CHAIN_IDS: Record<EvmNetwork, Partial<Record<Environment, number>>> = {\n base: { live: 8453, test: 84532 },\n optimism: { live: 10, test: 11155420 },\n ethereum: { live: 1, test: 11155111 },\n polygon: { live: 137 },\n arbitrum: { live: 42161 },\n avalanche: { live: 43114 },\n bnb: { live: 56 },\n}\n","import type { Environment } from './environment'\nimport type { Network } from './networks'\nimport { EVM_NETWORKS } from './networks.constants'\nimport type { Token } from './tokens'\n\nexport const TOKEN_DECIMALS = 6\n\nexport type TokenDeployment = { address: `0x${string}`; decimals: number }\n\ntype DeploymentsByNetwork = Partial<Record<Network, Partial<Record<Environment, TokenDeployment>>>>\ntype AddressesByNetwork = Partial<Record<Network, Partial<Record<Environment, `0x${string}`>>>>\n\nexport const TOKEN_DEPLOYMENTS: Record<Token, DeploymentsByNetwork> = {\n USDC: {\n base: {\n live: { address: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913', decimals: 6 },\n test: { address: '0x036CbD53842c5426634e7929541eC2318f3dCF7e', decimals: 6 },\n },\n optimism: {\n live: { address: '0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85', decimals: 6 },\n test: { address: '0x5fd84259d66Cd46123540766Be93DFE6D43130D7', decimals: 6 },\n },\n polygon: { live: { address: '0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359', decimals: 6 } },\n ethereum: {\n live: { address: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48', decimals: 6 },\n test: { address: '0x1c7D4B196Cb0C7B01d743Fbc6116a902379C7238', decimals: 6 },\n },\n arbitrum: { live: { address: '0xaf88d065e77c8cC2239327C5EDb3A432268e5831', decimals: 6 } },\n avalanche: { live: { address: '0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E', decimals: 6 } },\n bnb: { live: { address: '0x8AC76a51cc950d9822D68b83fE1Ad97B32Cd580d', decimals: 18 } },\n },\n USDT: {\n base: { live: { address: '0xfde4C96c8593536E31F229EA8f37b2ADa2699bb2', decimals: 6 } },\n optimism: { live: { address: '0x94b008aA00579c1307B0EF2c499aD98a8ce58e58', decimals: 6 } },\n polygon: { live: { address: '0xc2132D05D31c914a87C6611C10748AEb04B58e8F', decimals: 6 } },\n ethereum: { live: { address: '0xdAC17F958D2ee523a2206206994597C13D831ec7', decimals: 6 } },\n arbitrum: { live: { address: '0xFd086bC7CD5C481DCC9C85ebE478A1C0b69FCbb9', decimals: 6 } },\n avalanche: { live: { address: '0x9702230A8Ea53601f5cD2dc00fDBc13d4dF4A8c7', decimals: 6 } },\n bnb: { live: { address: '0x55d398326f99059fF775485246999027B3197955', decimals: 18 } },\n },\n}\n\nexport function getTokenDeployment(\n token: Token,\n network: Network,\n environment: Environment,\n): TokenDeployment | undefined {\n return TOKEN_DEPLOYMENTS[token][network]?.[environment]\n}\n\nexport function isPaymentDeploymentEnabled(\n token: Token,\n network: Network,\n environment: Environment,\n): boolean {\n if (network === 'bnb' && environment === 'live') return false\n return getTokenDeployment(token, network, environment) !== undefined\n}\n\nfunction deriveAddresses(deployments: DeploymentsByNetwork): AddressesByNetwork {\n const addresses: AddressesByNetwork = {}\n for (const network of EVM_NETWORKS) {\n const byEnvironment = deployments[network]\n if (!byEnvironment) continue\n const networkAddresses: Partial<Record<Environment, `0x${string}`>> = {}\n for (const environment of ['live', 'test'] as const) {\n const deployment = byEnvironment[environment]\n if (deployment) networkAddresses[environment] = deployment.address\n }\n addresses[network] = networkAddresses\n }\n return addresses\n}\n\nexport const TOKEN_ADDRESSES: Record<Token, AddressesByNetwork> = {\n USDC: deriveAddresses(TOKEN_DEPLOYMENTS.USDC),\n USDT: deriveAddresses(TOKEN_DEPLOYMENTS.USDT),\n}\n","import type { AltToken } from './alt-tokens'\nimport type { Network } from './networks'\n\nexport const ALT_TOKEN_DECIMALS: Record<AltToken, number> = {\n ETH: 18,\n BNB: 18,\n MATIC: 18,\n AVAX: 18,\n BTC: 8,\n}\n\nexport const ALT_TOKEN_ADDRESSES: Record<\n Network,\n Partial<Record<AltToken, 'native' | `0x${string}`>>\n> = {\n base: { ETH: 'native', BTC: '0xcbB7C0000aB88B473b1f5aFd9ef808440eed33Bf' },\n optimism: { ETH: 'native', BTC: '0x68f180fcCe6836688e9084f035309E29Bf0A2095' },\n ethereum: { ETH: 'native', BTC: '0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599' },\n arbitrum: { ETH: 'native', BTC: '0x2f2a2543B76A4166549F7aaB2e75Bef0aefC5B0f' },\n polygon: { MATIC: 'native', BTC: '0x1BFD67037B42Cf73acF2047067bd4F2C47D9BfD6' },\n avalanche: { AVAX: 'native' },\n bnb: { BNB: 'native' },\n}\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../src/constants.ts","../src/networks.constants.ts","../src/addresses.ts","../src/tokens.constants.ts","../src/alt-tokens.constants.ts"],"sourcesContent":["export * from './networks.constants'\nexport * from './tokens.constants'\nexport * from './alt-tokens.constants'\n","import type { Environment } from './environment'\nimport type { Network } from './networks'\n\nexport const NETWORK_LABELS: Record<Network, string> = {\n base: 'Base',\n optimism: 'Optimism',\n polygon: 'Polygon',\n ethereum: 'Ethereum',\n arbitrum: 'Arbitrum',\n avalanche: 'Avalanche',\n bnb: 'BNB Chain',\n tron: 'TRON',\n arc: 'Arc',\n}\n\nexport const NETWORK_EXPLORERS: Record<Network, string> = {\n base: 'https://basescan.org',\n optimism: 'https://optimistic.etherscan.io',\n polygon: 'https://polygonscan.com',\n ethereum: 'https://etherscan.io',\n arbitrum: 'https://arbiscan.io',\n avalanche: 'https://snowtrace.io',\n bnb: 'https://bscscan.com',\n tron: 'https://tronscan.org',\n arc: 'https://explorer.arc.io',\n}\n\nexport const EVM_NETWORKS = [\n 'base',\n 'optimism',\n 'polygon',\n 'ethereum',\n 'arbitrum',\n 'avalanche',\n 'bnb',\n 'arc',\n] as const\nexport type EvmNetwork = (typeof EVM_NETWORKS)[number]\n\nexport const OPERATIONAL_NETWORKS = [\n 'base',\n 'arbitrum',\n 'optimism',\n 'polygon',\n 'ethereum',\n 'avalanche',\n 'bnb',\n 'arc',\n 'tron',\n] as const\nexport type OperationalNetwork = (typeof OPERATIONAL_NETWORKS)[number]\n\nexport const CHAIN_IDS: Record<EvmNetwork, Partial<Record<Environment, number>>> = {\n base: { live: 8453, test: 84532 },\n optimism: { live: 10, test: 11155420 },\n ethereum: { live: 1, test: 11155111 },\n polygon: { live: 137 },\n arbitrum: { live: 42161 },\n avalanche: { live: 43114 },\n bnb: { live: 56 },\n arc: { live: 5042, test: 5042002 },\n}\n\nexport const NETWORK_FAMILIES: Record<Network, 'evm-official' | 'tron' | 'arc'> = {\n base: 'evm-official',\n optimism: 'evm-official',\n polygon: 'evm-official',\n ethereum: 'evm-official',\n arbitrum: 'evm-official',\n avalanche: 'evm-official',\n bnb: 'evm-official',\n tron: 'tron',\n arc: 'arc',\n}\nexport type NetworkFamily = (typeof NETWORK_FAMILIES)[Network]\n","import { z } from 'zod'\n\nexport type EvmAddress = `0x${string}`\nexport type TronAddress = string & { readonly __tronAddress: unique symbol }\n\nexport type SplitAddress = EvmAddress | TronAddress\n\nconst EVM_ADDRESS_REGEX = /^0x[0-9a-f]{40}$/i\nconst TRON_ADDRESS_REGEX = /^T[1-9A-HJ-NP-Za-km-z]{33}$/\n\nexport function isEvmAddress(value: string): value is EvmAddress {\n return EVM_ADDRESS_REGEX.test(value)\n}\n\nexport function isTronAddress(value: string): value is TronAddress {\n return TRON_ADDRESS_REGEX.test(value)\n}\n\nexport function isSplitAddress(value: string): value is SplitAddress {\n return isEvmAddress(value) || isTronAddress(value)\n}\n\nexport function tronAddress(value: string): TronAddress {\n if (!isTronAddress(value)) throw new Error(`not a valid TRON address: ${value}`)\n return value\n}\n\nexport function addressesEqual(a: string, b: string): boolean {\n if (isEvmAddress(a) && isEvmAddress(b)) return a.toLowerCase() === b.toLowerCase()\n return a === b\n}\n\nexport const SplitAddressSchema = z\n .string()\n .refine(isSplitAddress, 'must be a valid EVM (0x...) or TRON (T...) address')\n","import { type SplitAddress, tronAddress } from './addresses'\nimport type { Environment } from './environment'\nimport type { Network } from './networks'\nimport type { Token } from './tokens'\n\nexport const TOKEN_DECIMALS = 6\n\nexport type TokenDeployment = { address: SplitAddress; decimals: number }\n\ntype DeploymentsByNetwork = Partial<Record<Network, Partial<Record<Environment, TokenDeployment>>>>\ntype AddressesByNetwork = Partial<Record<Network, Partial<Record<Environment, SplitAddress>>>>\n\nexport const TOKEN_DEPLOYMENTS: Record<Token, DeploymentsByNetwork> = {\n USDC: {\n base: {\n live: { address: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913', decimals: 6 },\n test: { address: '0x036CbD53842c5426634e7929541eC2318f3dCF7e', decimals: 6 },\n },\n optimism: {\n live: { address: '0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85', decimals: 6 },\n test: { address: '0x5fd84259d66Cd46123540766Be93DFE6D43130D7', decimals: 6 },\n },\n polygon: { live: { address: '0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359', decimals: 6 } },\n ethereum: {\n live: { address: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48', decimals: 6 },\n test: { address: '0x1c7D4B196Cb0C7B01d743Fbc6116a902379C7238', decimals: 6 },\n },\n arbitrum: { live: { address: '0xaf88d065e77c8cC2239327C5EDb3A432268e5831', decimals: 6 } },\n avalanche: { live: { address: '0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E', decimals: 6 } },\n bnb: { live: { address: '0x8AC76a51cc950d9822D68b83fE1Ad97B32Cd580d', decimals: 18 } },\n arc: {\n live: { address: '0x3600000000000000000000000000000000000000', decimals: 6 },\n test: { address: '0x3600000000000000000000000000000000000000', decimals: 6 },\n },\n },\n USDT: {\n base: { live: { address: '0xfde4C96c8593536E31F229EA8f37b2ADa2699bb2', decimals: 6 } },\n optimism: { live: { address: '0x94b008aA00579c1307B0EF2c499aD98a8ce58e58', decimals: 6 } },\n polygon: { live: { address: '0xc2132D05D31c914a87C6611C10748AEb04B58e8F', decimals: 6 } },\n ethereum: { live: { address: '0xdAC17F958D2ee523a2206206994597C13D831ec7', decimals: 6 } },\n arbitrum: { live: { address: '0xFd086bC7CD5C481DCC9C85ebE478A1C0b69FCbb9', decimals: 6 } },\n avalanche: { live: { address: '0x9702230A8Ea53601f5cD2dc00fDBc13d4dF4A8c7', decimals: 6 } },\n bnb: { live: { address: '0x55d398326f99059fF775485246999027B3197955', decimals: 18 } },\n tron: {\n live: { address: tronAddress('TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t'), decimals: 6 },\n test: { address: tronAddress('TXYZopYRdj2D9XRtbG411XZZ3kM5VkAeBf'), decimals: 6 },\n },\n },\n}\n\nexport function getTokenDeployment(\n token: Token,\n network: Network,\n environment: Environment,\n): TokenDeployment | undefined {\n return TOKEN_DEPLOYMENTS[token][network]?.[environment]\n}\n\nexport function isPaymentDeploymentEnabled(\n token: Token,\n network: Network,\n environment: Environment,\n): boolean {\n if (network === 'bnb' && environment === 'live') return false\n return getTokenDeployment(token, network, environment) !== undefined\n}\n\nfunction deriveAddresses(deployments: DeploymentsByNetwork): AddressesByNetwork {\n const addresses: AddressesByNetwork = {}\n for (const network of Object.keys(deployments) as Network[]) {\n const byEnvironment = deployments[network]\n if (!byEnvironment) continue\n const networkAddresses: Partial<Record<Environment, SplitAddress>> = {}\n for (const environment of ['live', 'test'] as const) {\n const deployment = byEnvironment[environment]\n if (deployment) networkAddresses[environment] = deployment.address\n }\n addresses[network] = networkAddresses\n }\n return addresses\n}\n\nexport const TOKEN_ADDRESSES: Record<Token, AddressesByNetwork> = {\n USDC: deriveAddresses(TOKEN_DEPLOYMENTS.USDC),\n USDT: deriveAddresses(TOKEN_DEPLOYMENTS.USDT),\n}\n","import type { AltToken } from './alt-tokens'\nimport type { Network } from './networks'\n\nexport const ALT_TOKEN_DECIMALS: Record<AltToken, number> = {\n ETH: 18,\n BNB: 18,\n POL: 18,\n AVAX: 18,\n BTC: 8,\n LINK: 18,\n ARB: 18,\n OP: 18,\n CBETH: 18,\n}\n\nexport const ALT_TOKEN_ADDRESSES: Record<\n Network,\n Partial<Record<AltToken, 'native' | `0x${string}`>>\n> = {\n base: {\n ETH: 'native',\n BTC: '0xcbB7C0000aB88B473b1f5aFd9ef808440eed33Bf',\n LINK: '0x88Fb150BDc53A65fe94Dea0c9BA0a6dAf8C6e196',\n CBETH: '0x2Ae3F1Ec7F1F5012CFEab0185bfc7aa3cf0DEc22',\n },\n optimism: {\n ETH: 'native',\n BTC: '0x68f180fcCe6836688e9084f035309E29Bf0A2095',\n LINK: '0x350a791Bfc2C21F9Ed5d10980Dad2e2638ffa7f6',\n OP: '0x4200000000000000000000000000000000000042',\n },\n ethereum: {\n ETH: 'native',\n BTC: '0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599',\n LINK: '0x514910771AF9Ca656af840dff83E8264EcF986CA',\n },\n arbitrum: {\n ETH: 'native',\n BTC: '0x2f2a2543B76A4166549F7aaB2e75Bef0aefC5B0f',\n LINK: '0xf97f4df75117a78c1A5a0DBb814Af92458539FB4',\n ARB: '0x912CE59144191C1204E64559FE8253a0e49E6548',\n },\n polygon: {\n POL: 'native',\n BTC: '0x1BFD67037B42Cf73acF2047067bd4F2C47D9BfD6',\n LINK: '0xb0897686c545045aFc77CF20eC7A532E3120E0F1',\n },\n avalanche: {\n AVAX: 'native',\n BTC: '0x2297aebd383787a160dd0d9f71508148769342e3',\n LINK: '0x5947BB275c521040051D82396192181b413227A3',\n },\n bnb: { BNB: 'native' },\n tron: {},\n arc: {\n BTC: '0x171A4217b86A807A64eB94757Db6849fb4bDbAA0',\n },\n}\n"],"mappings":"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","names":[]}
@@ -4,6 +4,7 @@ import {
4
4
  CHAIN_IDS,
5
5
  EVM_NETWORKS,
6
6
  NETWORK_EXPLORERS,
7
+ NETWORK_FAMILIES,
7
8
  NETWORK_LABELS,
8
9
  OPERATIONAL_NETWORKS,
9
10
  TOKEN_ADDRESSES,
@@ -11,13 +12,14 @@ import {
11
12
  TOKEN_DEPLOYMENTS,
12
13
  getTokenDeployment,
13
14
  isPaymentDeploymentEnabled
14
- } from "./chunk-WKIOAEJ3.mjs";
15
+ } from "./chunk-UEXXRQL3.mjs";
15
16
  export {
16
17
  ALT_TOKEN_ADDRESSES,
17
18
  ALT_TOKEN_DECIMALS,
18
19
  CHAIN_IDS,
19
20
  EVM_NETWORKS,
20
21
  NETWORK_EXPLORERS,
22
+ NETWORK_FAMILIES,
21
23
  NETWORK_LABELS,
22
24
  OPERATIONAL_NETWORKS,
23
25
  TOKEN_ADDRESSES,