@klappay/types 5.0.0 → 5.1.1

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,41 @@ 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.constants.ts
68
+ var EVM_ADDRESS_REGEX = /^0x[0-9a-f]{40}$/i;
69
+ var TRON_ADDRESS_REGEX = /^T[1-9A-HJ-NP-Za-km-z]{33}$/;
70
+ function isEvmAddress(value) {
71
+ return EVM_ADDRESS_REGEX.test(value);
72
+ }
73
+ function isTronAddress(value) {
74
+ return TRON_ADDRESS_REGEX.test(value);
75
+ }
76
+ function isSplitAddress(value) {
77
+ return isEvmAddress(value) || isTronAddress(value);
78
+ }
79
+ function tronAddress(value) {
80
+ if (!isTronAddress(value)) throw new Error(`not a valid TRON address: ${value}`);
81
+ return value;
82
+ }
83
+ function addressesEqual(a, b) {
84
+ if (isEvmAddress(a) && isEvmAddress(b)) return a.toLowerCase() === b.toLowerCase();
85
+ return a === b;
86
+ }
47
87
 
48
88
  // src/tokens.constants.ts
49
89
  var TOKEN_DECIMALS = 6;
@@ -64,7 +104,11 @@ var TOKEN_DEPLOYMENTS = {
64
104
  },
65
105
  arbitrum: { live: { address: "0xaf88d065e77c8cC2239327C5EDb3A432268e5831", decimals: 6 } },
66
106
  avalanche: { live: { address: "0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E", decimals: 6 } },
67
- bnb: { live: { address: "0x8AC76a51cc950d9822D68b83fE1Ad97B32Cd580d", decimals: 18 } }
107
+ bnb: { live: { address: "0x8AC76a51cc950d9822D68b83fE1Ad97B32Cd580d", decimals: 18 } },
108
+ arc: {
109
+ live: { address: "0x3600000000000000000000000000000000000000", decimals: 6 },
110
+ test: { address: "0x3600000000000000000000000000000000000000", decimals: 6 }
111
+ }
68
112
  },
69
113
  USDT: {
70
114
  base: { live: { address: "0xfde4C96c8593536E31F229EA8f37b2ADa2699bb2", decimals: 6 } },
@@ -73,7 +117,11 @@ var TOKEN_DEPLOYMENTS = {
73
117
  ethereum: { live: { address: "0xdAC17F958D2ee523a2206206994597C13D831ec7", decimals: 6 } },
74
118
  arbitrum: { live: { address: "0xFd086bC7CD5C481DCC9C85ebE478A1C0b69FCbb9", decimals: 6 } },
75
119
  avalanche: { live: { address: "0x9702230A8Ea53601f5cD2dc00fDBc13d4dF4A8c7", decimals: 6 } },
76
- bnb: { live: { address: "0x55d398326f99059fF775485246999027B3197955", decimals: 18 } }
120
+ bnb: { live: { address: "0x55d398326f99059fF775485246999027B3197955", decimals: 18 } },
121
+ tron: {
122
+ live: { address: tronAddress("TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t"), decimals: 6 },
123
+ test: { address: tronAddress("TXYZopYRdj2D9XRtbG411XZZ3kM5VkAeBf"), decimals: 6 }
124
+ }
77
125
  }
78
126
  };
79
127
  function getTokenDeployment(token, network, environment) {
@@ -85,7 +133,7 @@ function isPaymentDeploymentEnabled(token, network, environment) {
85
133
  }
86
134
  function deriveAddresses(deployments) {
87
135
  const addresses = {};
88
- for (const network of EVM_NETWORKS) {
136
+ for (const network of Object.keys(deployments)) {
89
137
  const byEnvironment = deployments[network];
90
138
  if (!byEnvironment) continue;
91
139
  const networkAddresses = {};
@@ -148,7 +196,11 @@ var ALT_TOKEN_ADDRESSES = {
148
196
  BTC: "0x2297aebd383787a160dd0d9f71508148769342e3",
149
197
  LINK: "0x5947BB275c521040051D82396192181b413227A3"
150
198
  },
151
- bnb: { BNB: "native" }
199
+ bnb: { BNB: "native" },
200
+ tron: {},
201
+ arc: {
202
+ BTC: "0x171A4217b86A807A64eB94757Db6849fb4bDbAA0"
203
+ }
152
204
  };
153
205
 
154
206
  export {
@@ -157,6 +209,12 @@ export {
157
209
  EVM_NETWORKS,
158
210
  OPERATIONAL_NETWORKS,
159
211
  CHAIN_IDS,
212
+ NETWORK_FAMILIES,
213
+ isEvmAddress,
214
+ isTronAddress,
215
+ isSplitAddress,
216
+ tronAddress,
217
+ addressesEqual,
160
218
  TOKEN_DECIMALS,
161
219
  TOKEN_DEPLOYMENTS,
162
220
  getTokenDeployment,
@@ -165,4 +223,4 @@ export {
165
223
  ALT_TOKEN_DECIMALS,
166
224
  ALT_TOKEN_ADDRESSES
167
225
  };
168
- //# sourceMappingURL=chunk-VTX32VJN.mjs.map
226
+ //# sourceMappingURL=chunk-VL7W6KNP.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/networks.constants.ts","../src/addresses.constants.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","export 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","import { type SplitAddress, tronAddress } from './addresses.constants'\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,40 @@ 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;
16
29
 
17
30
  declare const TokenSchema: z.ZodEnum<["USDC", "USDT"]>;
18
31
  type Token = z.infer<typeof TokenSchema>;
19
32
 
20
33
  declare const TOKEN_DECIMALS = 6;
21
34
  type TokenDeployment = {
22
- address: `0x${string}`;
35
+ address: SplitAddress;
23
36
  decimals: number;
24
37
  };
25
38
  type DeploymentsByNetwork = Partial<Record<Network, Partial<Record<Environment, TokenDeployment>>>>;
26
- type AddressesByNetwork = Partial<Record<Network, Partial<Record<Environment, `0x${string}`>>>>;
39
+ type AddressesByNetwork = Partial<Record<Network, Partial<Record<Environment, SplitAddress>>>>;
27
40
  declare const TOKEN_DEPLOYMENTS: Record<Token, DeploymentsByNetwork>;
28
41
  declare function getTokenDeployment(token: Token, network: Network, environment: Environment): TokenDeployment | undefined;
29
42
  declare function isPaymentDeploymentEnabled(token: Token, network: Network, environment: Environment): boolean;
@@ -33,13 +46,13 @@ declare const AltTokenSchema: z.ZodEnum<["ETH", "BNB", "POL", "AVAX", "BTC", "LI
33
46
  type AltToken = z.infer<typeof AltTokenSchema>;
34
47
  declare const SwapAlternativeSchema: z.ZodObject<{
35
48
  token: z.ZodEnum<["ETH", "BNB", "POL", "AVAX", "BTC", "LINK", "ARB", "OP", "CBETH"]>;
36
- network: z.ZodEnum<["base", "optimism", "polygon", "ethereum", "arbitrum", "avalanche", "bnb"]>;
49
+ network: z.ZodEnum<["base", "optimism", "polygon", "ethereum", "arbitrum", "avalanche", "bnb", "tron", "arc"]>;
37
50
  }, "strip", z.ZodTypeAny, {
38
51
  token: "ETH" | "BNB" | "POL" | "AVAX" | "BTC" | "LINK" | "ARB" | "OP" | "CBETH";
39
- network: "base" | "optimism" | "polygon" | "ethereum" | "arbitrum" | "avalanche" | "bnb";
52
+ network: "base" | "optimism" | "polygon" | "ethereum" | "arbitrum" | "avalanche" | "bnb" | "tron" | "arc";
40
53
  }, {
41
54
  token: "ETH" | "BNB" | "POL" | "AVAX" | "BTC" | "LINK" | "ARB" | "OP" | "CBETH";
42
- network: "base" | "optimism" | "polygon" | "ethereum" | "arbitrum" | "avalanche" | "bnb";
55
+ network: "base" | "optimism" | "polygon" | "ethereum" | "arbitrum" | "avalanche" | "bnb" | "tron" | "arc";
43
56
  }>;
44
57
  type SwapAlternative = z.infer<typeof SwapAlternativeSchema>;
45
58
  declare function listSwapAlternatives(networks: readonly Network[]): SwapAlternative[];
@@ -47,4 +60,4 @@ declare function listSwapAlternatives(networks: readonly Network[]): SwapAlterna
47
60
  declare const ALT_TOKEN_DECIMALS: Record<AltToken, number>;
48
61
  declare const ALT_TOKEN_ADDRESSES: Record<Network, Partial<Record<AltToken, 'native' | `0x${string}`>>>;
49
62
 
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 };
63
+ export { ALT_TOKEN_ADDRESSES as A, isTronAddress as B, CHAIN_IDS as C, listSwapAlternatives as D, EVM_NETWORKS as E, tronAddress as F, 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, type SwapAlternative as n, SwapAlternativeSchema as o, TOKEN_DECIMALS as p, TOKEN_DEPLOYMENTS as q, type Token as r, type TokenDeployment as s, TokenSchema as t, type TronAddress as u, addressesEqual as v, getTokenDeployment as w, isEvmAddress as x, isPaymentDeploymentEnabled as y, isSplitAddress as z };
@@ -3,27 +3,40 @@ 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;
16
29
 
17
30
  declare const TokenSchema: z.ZodEnum<["USDC", "USDT"]>;
18
31
  type Token = z.infer<typeof TokenSchema>;
19
32
 
20
33
  declare const TOKEN_DECIMALS = 6;
21
34
  type TokenDeployment = {
22
- address: `0x${string}`;
35
+ address: SplitAddress;
23
36
  decimals: number;
24
37
  };
25
38
  type DeploymentsByNetwork = Partial<Record<Network, Partial<Record<Environment, TokenDeployment>>>>;
26
- type AddressesByNetwork = Partial<Record<Network, Partial<Record<Environment, `0x${string}`>>>>;
39
+ type AddressesByNetwork = Partial<Record<Network, Partial<Record<Environment, SplitAddress>>>>;
27
40
  declare const TOKEN_DEPLOYMENTS: Record<Token, DeploymentsByNetwork>;
28
41
  declare function getTokenDeployment(token: Token, network: Network, environment: Environment): TokenDeployment | undefined;
29
42
  declare function isPaymentDeploymentEnabled(token: Token, network: Network, environment: Environment): boolean;
@@ -33,13 +46,13 @@ declare const AltTokenSchema: z.ZodEnum<["ETH", "BNB", "POL", "AVAX", "BTC", "LI
33
46
  type AltToken = z.infer<typeof AltTokenSchema>;
34
47
  declare const SwapAlternativeSchema: z.ZodObject<{
35
48
  token: z.ZodEnum<["ETH", "BNB", "POL", "AVAX", "BTC", "LINK", "ARB", "OP", "CBETH"]>;
36
- network: z.ZodEnum<["base", "optimism", "polygon", "ethereum", "arbitrum", "avalanche", "bnb"]>;
49
+ network: z.ZodEnum<["base", "optimism", "polygon", "ethereum", "arbitrum", "avalanche", "bnb", "tron", "arc"]>;
37
50
  }, "strip", z.ZodTypeAny, {
38
51
  token: "ETH" | "BNB" | "POL" | "AVAX" | "BTC" | "LINK" | "ARB" | "OP" | "CBETH";
39
- network: "base" | "optimism" | "polygon" | "ethereum" | "arbitrum" | "avalanche" | "bnb";
52
+ network: "base" | "optimism" | "polygon" | "ethereum" | "arbitrum" | "avalanche" | "bnb" | "tron" | "arc";
40
53
  }, {
41
54
  token: "ETH" | "BNB" | "POL" | "AVAX" | "BTC" | "LINK" | "ARB" | "OP" | "CBETH";
42
- network: "base" | "optimism" | "polygon" | "ethereum" | "arbitrum" | "avalanche" | "bnb";
55
+ network: "base" | "optimism" | "polygon" | "ethereum" | "arbitrum" | "avalanche" | "bnb" | "tron" | "arc";
43
56
  }>;
44
57
  type SwapAlternative = z.infer<typeof SwapAlternativeSchema>;
45
58
  declare function listSwapAlternatives(networks: readonly Network[]): SwapAlternative[];
@@ -47,4 +60,4 @@ declare function listSwapAlternatives(networks: readonly Network[]): SwapAlterna
47
60
  declare const ALT_TOKEN_DECIMALS: Record<AltToken, number>;
48
61
  declare const ALT_TOKEN_ADDRESSES: Record<Network, Partial<Record<AltToken, 'native' | `0x${string}`>>>;
49
62
 
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 };
63
+ export { ALT_TOKEN_ADDRESSES as A, isTronAddress as B, CHAIN_IDS as C, listSwapAlternatives as D, EVM_NETWORKS as E, tronAddress as F, 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, type SwapAlternative as n, SwapAlternativeSchema as o, TOKEN_DECIMALS as p, TOKEN_DEPLOYMENTS as q, type Token as r, type TokenDeployment as s, TokenSchema as t, type TronAddress as u, addressesEqual as v, getTokenDeployment as w, isEvmAddress as x, isPaymentDeploymentEnabled as y, isSplitAddress 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, p as TOKEN_DECIMALS, q as TOKEN_DEPLOYMENTS, s as TokenDeployment, w as getTokenDeployment, y as isPaymentDeploymentEnabled } from './constants-DpqgXUf_.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, p as TOKEN_DECIMALS, q as TOKEN_DEPLOYMENTS, s as TokenDeployment, w as getTokenDeployment, y as isPaymentDeploymentEnabled } from './constants-DpqgXUf_.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,30 @@ 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.constants.ts
106
+ var TRON_ADDRESS_REGEX = /^T[1-9A-HJ-NP-Za-km-z]{33}$/;
107
+ function isTronAddress(value) {
108
+ return TRON_ADDRESS_REGEX.test(value);
109
+ }
110
+ function tronAddress(value) {
111
+ if (!isTronAddress(value)) throw new Error(`not a valid TRON address: ${value}`);
112
+ return value;
113
+ }
84
114
 
85
115
  // src/tokens.constants.ts
86
116
  var TOKEN_DECIMALS = 6;
@@ -101,7 +131,11 @@ var TOKEN_DEPLOYMENTS = {
101
131
  },
102
132
  arbitrum: { live: { address: "0xaf88d065e77c8cC2239327C5EDb3A432268e5831", decimals: 6 } },
103
133
  avalanche: { live: { address: "0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E", decimals: 6 } },
104
- bnb: { live: { address: "0x8AC76a51cc950d9822D68b83fE1Ad97B32Cd580d", decimals: 18 } }
134
+ bnb: { live: { address: "0x8AC76a51cc950d9822D68b83fE1Ad97B32Cd580d", decimals: 18 } },
135
+ arc: {
136
+ live: { address: "0x3600000000000000000000000000000000000000", decimals: 6 },
137
+ test: { address: "0x3600000000000000000000000000000000000000", decimals: 6 }
138
+ }
105
139
  },
106
140
  USDT: {
107
141
  base: { live: { address: "0xfde4C96c8593536E31F229EA8f37b2ADa2699bb2", decimals: 6 } },
@@ -110,7 +144,11 @@ var TOKEN_DEPLOYMENTS = {
110
144
  ethereum: { live: { address: "0xdAC17F958D2ee523a2206206994597C13D831ec7", decimals: 6 } },
111
145
  arbitrum: { live: { address: "0xFd086bC7CD5C481DCC9C85ebE478A1C0b69FCbb9", decimals: 6 } },
112
146
  avalanche: { live: { address: "0x9702230A8Ea53601f5cD2dc00fDBc13d4dF4A8c7", decimals: 6 } },
113
- bnb: { live: { address: "0x55d398326f99059fF775485246999027B3197955", decimals: 18 } }
147
+ bnb: { live: { address: "0x55d398326f99059fF775485246999027B3197955", decimals: 18 } },
148
+ tron: {
149
+ live: { address: tronAddress("TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t"), decimals: 6 },
150
+ test: { address: tronAddress("TXYZopYRdj2D9XRtbG411XZZ3kM5VkAeBf"), decimals: 6 }
151
+ }
114
152
  }
115
153
  };
116
154
  function getTokenDeployment(token, network, environment) {
@@ -122,7 +160,7 @@ function isPaymentDeploymentEnabled(token, network, environment) {
122
160
  }
123
161
  function deriveAddresses(deployments) {
124
162
  const addresses = {};
125
- for (const network of EVM_NETWORKS) {
163
+ for (const network of Object.keys(deployments)) {
126
164
  const byEnvironment = deployments[network];
127
165
  if (!byEnvironment) continue;
128
166
  const networkAddresses = {};
@@ -185,7 +223,11 @@ var ALT_TOKEN_ADDRESSES = {
185
223
  BTC: "0x2297aebd383787a160dd0d9f71508148769342e3",
186
224
  LINK: "0x5947BB275c521040051D82396192181b413227A3"
187
225
  },
188
- bnb: { BNB: "native" }
226
+ bnb: { BNB: "native" },
227
+ tron: {},
228
+ arc: {
229
+ BTC: "0x171A4217b86A807A64eB94757Db6849fb4bDbAA0"
230
+ }
189
231
  };
190
232
  // Annotate the CommonJS export names for ESM import in node:
191
233
  0 && (module.exports = {
@@ -194,6 +236,7 @@ var ALT_TOKEN_ADDRESSES = {
194
236
  CHAIN_IDS,
195
237
  EVM_NETWORKS,
196
238
  NETWORK_EXPLORERS,
239
+ NETWORK_FAMILIES,
197
240
  NETWORK_LABELS,
198
241
  OPERATIONAL_NETWORKS,
199
242
  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.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 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","export 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","import { type SplitAddress, tronAddress } from './addresses.constants'\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-VL7W6KNP.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,