@klappay/types 5.0.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 = {};
@@ -148,7 +198,11 @@ var ALT_TOKEN_ADDRESSES = {
148
198
  BTC: "0x2297aebd383787a160dd0d9f71508148769342e3",
149
199
  LINK: "0x5947BB275c521040051D82396192181b413227A3"
150
200
  },
151
- bnb: { BNB: "native" }
201
+ bnb: { BNB: "native" },
202
+ tron: {},
203
+ arc: {
204
+ BTC: "0x171A4217b86A807A64eB94757Db6849fb4bDbAA0"
205
+ }
152
206
  };
153
207
 
154
208
  export {
@@ -157,6 +211,13 @@ export {
157
211
  EVM_NETWORKS,
158
212
  OPERATIONAL_NETWORKS,
159
213
  CHAIN_IDS,
214
+ NETWORK_FAMILIES,
215
+ isEvmAddress,
216
+ isTronAddress,
217
+ isSplitAddress,
218
+ tronAddress,
219
+ addressesEqual,
220
+ SplitAddressSchema,
160
221
  TOKEN_DECIMALS,
161
222
  TOKEN_DEPLOYMENTS,
162
223
  getTokenDeployment,
@@ -165,4 +226,4 @@ export {
165
226
  ALT_TOKEN_DECIMALS,
166
227
  ALT_TOKEN_ADDRESSES
167
228
  };
168
- //# sourceMappingURL=chunk-VTX32VJN.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":[]}
@@ -3,27 +3,41 @@ import { z } from 'zod';
3
3
  declare const EnvironmentSchema: z.ZodEnum<["live", "test"]>;
4
4
  type Environment = z.infer<typeof EnvironmentSchema>;
5
5
 
6
- declare const NetworkSchema: z.ZodEnum<["base", "optimism", "polygon", "ethereum", "arbitrum", "avalanche", "bnb"]>;
6
+ declare const NetworkSchema: z.ZodEnum<["base", "optimism", "polygon", "ethereum", "arbitrum", "avalanche", "bnb", "tron", "arc"]>;
7
7
  type Network = z.infer<typeof NetworkSchema>;
8
8
 
9
9
  declare const NETWORK_LABELS: Record<Network, string>;
10
10
  declare const NETWORK_EXPLORERS: Record<Network, string>;
11
- declare const EVM_NETWORKS: readonly ["base", "optimism", "polygon", "ethereum", "arbitrum", "avalanche", "bnb"];
11
+ declare const EVM_NETWORKS: readonly ["base", "optimism", "polygon", "ethereum", "arbitrum", "avalanche", "bnb", "arc"];
12
12
  type EvmNetwork = (typeof EVM_NETWORKS)[number];
13
- declare const OPERATIONAL_NETWORKS: readonly ["base", "arbitrum", "optimism", "polygon", "ethereum", "avalanche", "bnb"];
13
+ declare const OPERATIONAL_NETWORKS: readonly ["base", "arbitrum", "optimism", "polygon", "ethereum", "avalanche", "bnb", "arc", "tron"];
14
14
  type OperationalNetwork = (typeof OPERATIONAL_NETWORKS)[number];
15
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>;
16
30
 
17
31
  declare const TokenSchema: z.ZodEnum<["USDC", "USDT"]>;
18
32
  type Token = z.infer<typeof TokenSchema>;
19
33
 
20
34
  declare const TOKEN_DECIMALS = 6;
21
35
  type TokenDeployment = {
22
- address: `0x${string}`;
36
+ address: SplitAddress;
23
37
  decimals: number;
24
38
  };
25
39
  type DeploymentsByNetwork = Partial<Record<Network, Partial<Record<Environment, TokenDeployment>>>>;
26
- type AddressesByNetwork = Partial<Record<Network, Partial<Record<Environment, `0x${string}`>>>>;
40
+ type AddressesByNetwork = Partial<Record<Network, Partial<Record<Environment, SplitAddress>>>>;
27
41
  declare const TOKEN_DEPLOYMENTS: Record<Token, DeploymentsByNetwork>;
28
42
  declare function getTokenDeployment(token: Token, network: Network, environment: Environment): TokenDeployment | undefined;
29
43
  declare function isPaymentDeploymentEnabled(token: Token, network: Network, environment: Environment): boolean;
@@ -33,13 +47,13 @@ declare const AltTokenSchema: z.ZodEnum<["ETH", "BNB", "POL", "AVAX", "BTC", "LI
33
47
  type AltToken = z.infer<typeof AltTokenSchema>;
34
48
  declare const SwapAlternativeSchema: z.ZodObject<{
35
49
  token: z.ZodEnum<["ETH", "BNB", "POL", "AVAX", "BTC", "LINK", "ARB", "OP", "CBETH"]>;
36
- network: z.ZodEnum<["base", "optimism", "polygon", "ethereum", "arbitrum", "avalanche", "bnb"]>;
50
+ network: z.ZodEnum<["base", "optimism", "polygon", "ethereum", "arbitrum", "avalanche", "bnb", "tron", "arc"]>;
37
51
  }, "strip", z.ZodTypeAny, {
38
52
  token: "ETH" | "BNB" | "POL" | "AVAX" | "BTC" | "LINK" | "ARB" | "OP" | "CBETH";
39
- network: "base" | "optimism" | "polygon" | "ethereum" | "arbitrum" | "avalanche" | "bnb";
53
+ network: "base" | "optimism" | "polygon" | "ethereum" | "arbitrum" | "avalanche" | "bnb" | "tron" | "arc";
40
54
  }, {
41
55
  token: "ETH" | "BNB" | "POL" | "AVAX" | "BTC" | "LINK" | "ARB" | "OP" | "CBETH";
42
- network: "base" | "optimism" | "polygon" | "ethereum" | "arbitrum" | "avalanche" | "bnb";
56
+ network: "base" | "optimism" | "polygon" | "ethereum" | "arbitrum" | "avalanche" | "bnb" | "tron" | "arc";
43
57
  }>;
44
58
  type SwapAlternative = z.infer<typeof SwapAlternativeSchema>;
45
59
  declare function listSwapAlternatives(networks: readonly Network[]): SwapAlternative[];
@@ -47,4 +61,4 @@ declare function listSwapAlternatives(networks: readonly Network[]): SwapAlterna
47
61
  declare const ALT_TOKEN_DECIMALS: Record<AltToken, number>;
48
62
  declare const ALT_TOKEN_ADDRESSES: Record<Network, Partial<Record<AltToken, 'native' | `0x${string}`>>>;
49
63
 
50
- export { ALT_TOKEN_ADDRESSES as A, CHAIN_IDS as C, EVM_NETWORKS as E, NETWORK_EXPLORERS as N, OPERATIONAL_NETWORKS as O, type SwapAlternative 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 EvmNetwork as f, NETWORK_LABELS as g, type Network as h, NetworkSchema as i, type OperationalNetwork as j, SwapAlternativeSchema as k, TOKEN_DECIMALS as l, TOKEN_DEPLOYMENTS as m, type Token as n, type TokenDeployment as o, TokenSchema as p, getTokenDeployment as q, isPaymentDeploymentEnabled as r, listSwapAlternatives as s };
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 };
@@ -3,27 +3,41 @@ import { z } from 'zod';
3
3
  declare const EnvironmentSchema: z.ZodEnum<["live", "test"]>;
4
4
  type Environment = z.infer<typeof EnvironmentSchema>;
5
5
 
6
- declare const NetworkSchema: z.ZodEnum<["base", "optimism", "polygon", "ethereum", "arbitrum", "avalanche", "bnb"]>;
6
+ declare const NetworkSchema: z.ZodEnum<["base", "optimism", "polygon", "ethereum", "arbitrum", "avalanche", "bnb", "tron", "arc"]>;
7
7
  type Network = z.infer<typeof NetworkSchema>;
8
8
 
9
9
  declare const NETWORK_LABELS: Record<Network, string>;
10
10
  declare const NETWORK_EXPLORERS: Record<Network, string>;
11
- declare const EVM_NETWORKS: readonly ["base", "optimism", "polygon", "ethereum", "arbitrum", "avalanche", "bnb"];
11
+ declare const EVM_NETWORKS: readonly ["base", "optimism", "polygon", "ethereum", "arbitrum", "avalanche", "bnb", "arc"];
12
12
  type EvmNetwork = (typeof EVM_NETWORKS)[number];
13
- declare const OPERATIONAL_NETWORKS: readonly ["base", "arbitrum", "optimism", "polygon", "ethereum", "avalanche", "bnb"];
13
+ declare const OPERATIONAL_NETWORKS: readonly ["base", "arbitrum", "optimism", "polygon", "ethereum", "avalanche", "bnb", "arc", "tron"];
14
14
  type OperationalNetwork = (typeof OPERATIONAL_NETWORKS)[number];
15
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>;
16
30
 
17
31
  declare const TokenSchema: z.ZodEnum<["USDC", "USDT"]>;
18
32
  type Token = z.infer<typeof TokenSchema>;
19
33
 
20
34
  declare const TOKEN_DECIMALS = 6;
21
35
  type TokenDeployment = {
22
- address: `0x${string}`;
36
+ address: SplitAddress;
23
37
  decimals: number;
24
38
  };
25
39
  type DeploymentsByNetwork = Partial<Record<Network, Partial<Record<Environment, TokenDeployment>>>>;
26
- type AddressesByNetwork = Partial<Record<Network, Partial<Record<Environment, `0x${string}`>>>>;
40
+ type AddressesByNetwork = Partial<Record<Network, Partial<Record<Environment, SplitAddress>>>>;
27
41
  declare const TOKEN_DEPLOYMENTS: Record<Token, DeploymentsByNetwork>;
28
42
  declare function getTokenDeployment(token: Token, network: Network, environment: Environment): TokenDeployment | undefined;
29
43
  declare function isPaymentDeploymentEnabled(token: Token, network: Network, environment: Environment): boolean;
@@ -33,13 +47,13 @@ declare const AltTokenSchema: z.ZodEnum<["ETH", "BNB", "POL", "AVAX", "BTC", "LI
33
47
  type AltToken = z.infer<typeof AltTokenSchema>;
34
48
  declare const SwapAlternativeSchema: z.ZodObject<{
35
49
  token: z.ZodEnum<["ETH", "BNB", "POL", "AVAX", "BTC", "LINK", "ARB", "OP", "CBETH"]>;
36
- network: z.ZodEnum<["base", "optimism", "polygon", "ethereum", "arbitrum", "avalanche", "bnb"]>;
50
+ network: z.ZodEnum<["base", "optimism", "polygon", "ethereum", "arbitrum", "avalanche", "bnb", "tron", "arc"]>;
37
51
  }, "strip", z.ZodTypeAny, {
38
52
  token: "ETH" | "BNB" | "POL" | "AVAX" | "BTC" | "LINK" | "ARB" | "OP" | "CBETH";
39
- network: "base" | "optimism" | "polygon" | "ethereum" | "arbitrum" | "avalanche" | "bnb";
53
+ network: "base" | "optimism" | "polygon" | "ethereum" | "arbitrum" | "avalanche" | "bnb" | "tron" | "arc";
40
54
  }, {
41
55
  token: "ETH" | "BNB" | "POL" | "AVAX" | "BTC" | "LINK" | "ARB" | "OP" | "CBETH";
42
- network: "base" | "optimism" | "polygon" | "ethereum" | "arbitrum" | "avalanche" | "bnb";
56
+ network: "base" | "optimism" | "polygon" | "ethereum" | "arbitrum" | "avalanche" | "bnb" | "tron" | "arc";
43
57
  }>;
44
58
  type SwapAlternative = z.infer<typeof SwapAlternativeSchema>;
45
59
  declare function listSwapAlternatives(networks: readonly Network[]): SwapAlternative[];
@@ -47,4 +61,4 @@ declare function listSwapAlternatives(networks: readonly Network[]): SwapAlterna
47
61
  declare const ALT_TOKEN_DECIMALS: Record<AltToken, number>;
48
62
  declare const ALT_TOKEN_ADDRESSES: Record<Network, Partial<Record<AltToken, 'native' | `0x${string}`>>>;
49
63
 
50
- export { ALT_TOKEN_ADDRESSES as A, CHAIN_IDS as C, EVM_NETWORKS as E, NETWORK_EXPLORERS as N, OPERATIONAL_NETWORKS as O, type SwapAlternative 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 EvmNetwork as f, NETWORK_LABELS as g, type Network as h, NetworkSchema as i, type OperationalNetwork as j, SwapAlternativeSchema as k, TOKEN_DECIMALS as l, TOKEN_DEPLOYMENTS as m, type Token as n, type TokenDeployment as o, TokenSchema as p, getTokenDeployment as q, isPaymentDeploymentEnabled as r, listSwapAlternatives as s };
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-Di4Qr6af.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-Di4Qr6af.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,9 +87,40 @@ 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 }
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"
83
103
  };
84
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");
123
+
85
124
  // src/tokens.constants.ts
86
125
  var TOKEN_DECIMALS = 6;
87
126
  var TOKEN_DEPLOYMENTS = {
@@ -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 = {};
@@ -185,7 +232,11 @@ var ALT_TOKEN_ADDRESSES = {
185
232
  BTC: "0x2297aebd383787a160dd0d9f71508148769342e3",
186
233
  LINK: "0x5947BB275c521040051D82396192181b413227A3"
187
234
  },
188
- bnb: { BNB: "native" }
235
+ bnb: { BNB: "native" },
236
+ tron: {},
237
+ arc: {
238
+ BTC: "0x171A4217b86A807A64eB94757Db6849fb4bDbAA0"
239
+ }
189
240
  };
190
241
  // Annotate the CommonJS export names for ESM import in node:
191
242
  0 && (module.exports = {
@@ -194,6 +245,7 @@ var ALT_TOKEN_ADDRESSES = {
194
245
  CHAIN_IDS,
195
246
  EVM_NETWORKS,
196
247
  NETWORK_EXPLORERS,
248
+ NETWORK_FAMILIES,
197
249
  NETWORK_LABELS,
198
250
  OPERATIONAL_NETWORKS,
199
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 POL: 18,\n AVAX: 18,\n BTC: 8,\n LINK: 18,\n ARB: 18,\n OP: 18,\n CBETH: 18,\n}\n\n// LINK: Chainlink's own official per-chain deployment on every network\n// below except Avalanche, where the only bridged instance is the\n// Avalanche Bridge's \"LINK.e\" (bridged from Ethereum, not a Chainlink\n// CCIP-native deployment) — same bridge-trust profile as any other\n// Avalanche Bridge (\".e\") asset, not Chainlink's own canonical issuance.\n// ARB/OP: each network's own governance token, native to that chain only.\n// CBETH: Coinbase's liquid-staked ETH, issued and custodied by Coinbase —\n// same trust model already accepted for Base's own cbBTC.\n// Avalanche's BTC entry is BTC.b (Bitcoin bridged via the Avalanche\n// Bridge); its bridge/custody operations transitioned from Ava Labs to\n// Lombard Finance in 2026, contract address unchanged — worth\n// re-reviewing if that custody model changes further.\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}\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-VTX32VJN.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,