@wazabiai/x402 0.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.
@@ -0,0 +1,147 @@
1
+ 'use strict';
2
+
3
+ /* @wazabiai/x402 - x402 v2 Payment Protocol SDK */
4
+
5
+ // src/chains/bnb.ts
6
+ var BSC_CHAIN_ID = 56;
7
+ var BSC_CAIP_ID = "eip155:56";
8
+ var BSC_RPC_URLS = [
9
+ "https://bsc-dataseed.binance.org",
10
+ "https://bsc-dataseed1.binance.org",
11
+ "https://bsc-dataseed2.binance.org",
12
+ "https://bsc-dataseed3.binance.org",
13
+ "https://bsc-dataseed4.binance.org",
14
+ "https://bsc-dataseed1.defibit.io",
15
+ "https://bsc-dataseed1.ninicoin.io"
16
+ ];
17
+ var BSC_DEFAULT_RPC = BSC_RPC_URLS[0];
18
+ var BSC_BLOCK_EXPLORER = "https://bscscan.com";
19
+ var BSC_USDT = {
20
+ address: "0x55d398326f99059fF775485246999027B3197955",
21
+ symbol: "USDT",
22
+ decimals: 18,
23
+ name: "Tether USD"
24
+ };
25
+ var BSC_USDC = {
26
+ address: "0x8AC76a51cc950d9822D68b83fE1Ad97B32Cd580d",
27
+ symbol: "USDC",
28
+ decimals: 18,
29
+ name: "USD Coin"
30
+ };
31
+ var BSC_BUSD = {
32
+ address: "0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56",
33
+ symbol: "BUSD",
34
+ decimals: 18,
35
+ name: "Binance USD"
36
+ };
37
+ var BSC_WBNB = {
38
+ address: "0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c",
39
+ symbol: "BNB",
40
+ decimals: 18,
41
+ name: "Wrapped BNB"
42
+ };
43
+ var BSC_DEFAULT_TOKEN = BSC_USDT;
44
+ var BSC_TOKENS = {
45
+ USDT: BSC_USDT,
46
+ USDC: BSC_USDC,
47
+ BUSD: BSC_BUSD,
48
+ WBNB: BSC_WBNB
49
+ };
50
+ var BSC_TOKEN_BY_ADDRESS = {
51
+ [BSC_USDT.address.toLowerCase()]: BSC_USDT,
52
+ [BSC_USDC.address.toLowerCase()]: BSC_USDC,
53
+ [BSC_BUSD.address.toLowerCase()]: BSC_BUSD,
54
+ [BSC_WBNB.address.toLowerCase()]: BSC_WBNB
55
+ };
56
+ var BSC_NETWORK_CONFIG = {
57
+ caipId: BSC_CAIP_ID,
58
+ chainId: BSC_CHAIN_ID,
59
+ name: "BNB Smart Chain",
60
+ rpcUrl: BSC_DEFAULT_RPC,
61
+ nativeCurrency: {
62
+ name: "BNB",
63
+ symbol: "BNB",
64
+ decimals: 18
65
+ },
66
+ blockExplorer: BSC_BLOCK_EXPLORER,
67
+ tokens: BSC_TOKENS
68
+ };
69
+ function getTokenByAddress(address) {
70
+ return BSC_TOKEN_BY_ADDRESS[address.toLowerCase()];
71
+ }
72
+ function getTokenBySymbol(symbol) {
73
+ const upperSymbol = symbol.toUpperCase();
74
+ return BSC_TOKENS[upperSymbol];
75
+ }
76
+ function isTokenSupported(address) {
77
+ return address.toLowerCase() in BSC_TOKEN_BY_ADDRESS;
78
+ }
79
+ function formatTokenAmount(amount, tokenAddress) {
80
+ const token = getTokenByAddress(tokenAddress);
81
+ const decimals = token?.decimals ?? 18;
82
+ const amountBigInt = typeof amount === "string" ? BigInt(amount) : amount;
83
+ const divisor = BigInt(10 ** decimals);
84
+ const wholePart = amountBigInt / divisor;
85
+ const fractionalPart = amountBigInt % divisor;
86
+ const fractionalStr = fractionalPart.toString().padStart(decimals, "0");
87
+ const trimmedFractional = fractionalStr.replace(/0+$/, "").padEnd(2, "0");
88
+ return `${wholePart}.${trimmedFractional}`;
89
+ }
90
+ function parseTokenAmount(amount, tokenAddress) {
91
+ const token = getTokenByAddress(tokenAddress);
92
+ const decimals = token?.decimals ?? 18;
93
+ const [whole, fractional = ""] = amount.split(".");
94
+ const paddedFractional = fractional.padEnd(decimals, "0").slice(0, decimals);
95
+ return BigInt(whole + paddedFractional);
96
+ }
97
+ function getTxUrl(txHash) {
98
+ return `${BSC_BLOCK_EXPLORER}/tx/${txHash}`;
99
+ }
100
+ function getAddressUrl(address) {
101
+ return `${BSC_BLOCK_EXPLORER}/address/${address}`;
102
+ }
103
+ function getTokenUrl(tokenAddress) {
104
+ return `${BSC_BLOCK_EXPLORER}/token/${tokenAddress}`;
105
+ }
106
+
107
+ // src/chains/index.ts
108
+ var SUPPORTED_NETWORKS = {
109
+ [BSC_CAIP_ID]: BSC_NETWORK_CONFIG
110
+ };
111
+ function getNetworkConfig(caipId) {
112
+ return SUPPORTED_NETWORKS[caipId];
113
+ }
114
+ function isNetworkSupported(caipId) {
115
+ return caipId in SUPPORTED_NETWORKS;
116
+ }
117
+ function getSupportedNetworkIds() {
118
+ return Object.keys(SUPPORTED_NETWORKS);
119
+ }
120
+
121
+ exports.BSC_BLOCK_EXPLORER = BSC_BLOCK_EXPLORER;
122
+ exports.BSC_BUSD = BSC_BUSD;
123
+ exports.BSC_CAIP_ID = BSC_CAIP_ID;
124
+ exports.BSC_CHAIN_ID = BSC_CHAIN_ID;
125
+ exports.BSC_DEFAULT_RPC = BSC_DEFAULT_RPC;
126
+ exports.BSC_DEFAULT_TOKEN = BSC_DEFAULT_TOKEN;
127
+ exports.BSC_NETWORK_CONFIG = BSC_NETWORK_CONFIG;
128
+ exports.BSC_RPC_URLS = BSC_RPC_URLS;
129
+ exports.BSC_TOKENS = BSC_TOKENS;
130
+ exports.BSC_TOKEN_BY_ADDRESS = BSC_TOKEN_BY_ADDRESS;
131
+ exports.BSC_USDC = BSC_USDC;
132
+ exports.BSC_USDT = BSC_USDT;
133
+ exports.BSC_WBNB = BSC_WBNB;
134
+ exports.SUPPORTED_NETWORKS = SUPPORTED_NETWORKS;
135
+ exports.formatTokenAmount = formatTokenAmount;
136
+ exports.getAddressUrl = getAddressUrl;
137
+ exports.getNetworkConfig = getNetworkConfig;
138
+ exports.getSupportedNetworkIds = getSupportedNetworkIds;
139
+ exports.getTokenByAddress = getTokenByAddress;
140
+ exports.getTokenBySymbol = getTokenBySymbol;
141
+ exports.getTokenUrl = getTokenUrl;
142
+ exports.getTxUrl = getTxUrl;
143
+ exports.isNetworkSupported = isNetworkSupported;
144
+ exports.isTokenSupported = isTokenSupported;
145
+ exports.parseTokenAmount = parseTokenAmount;
146
+ //# sourceMappingURL=index.cjs.map
147
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/chains/bnb.ts","../../src/chains/index.ts"],"names":[],"mappings":"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","file":"index.cjs","sourcesContent":["import type { NetworkConfig, TokenConfig } from '../types/index.js';\n\n// ============================================================================\n// BNB Smart Chain Configuration\n// ============================================================================\n\n/**\n * BNB Smart Chain (BSC) Mainnet Chain ID\n */\nexport const BSC_CHAIN_ID = 56 as const;\n\n/**\n * BNB Smart Chain CAIP-2 Identifier\n */\nexport const BSC_CAIP_ID = 'eip155:56' as const;\n\n/**\n * BNB Smart Chain public RPC endpoints\n * Using multiple for fallback support\n */\nexport const BSC_RPC_URLS = [\n 'https://bsc-dataseed.binance.org',\n 'https://bsc-dataseed1.binance.org',\n 'https://bsc-dataseed2.binance.org',\n 'https://bsc-dataseed3.binance.org',\n 'https://bsc-dataseed4.binance.org',\n 'https://bsc-dataseed1.defibit.io',\n 'https://bsc-dataseed1.ninicoin.io',\n] as const;\n\n/**\n * Default BSC RPC URL\n */\nexport const BSC_DEFAULT_RPC = BSC_RPC_URLS[0];\n\n/**\n * BscScan block explorer URL\n */\nexport const BSC_BLOCK_EXPLORER = 'https://bscscan.com' as const;\n\n// ============================================================================\n// Token Configurations\n// ============================================================================\n\n/**\n * BSC-USDT (Tether USD) Token Configuration\n * @see https://bscscan.com/token/0x55d398326f99059fF775485246999027B3197955\n */\nexport const BSC_USDT: TokenConfig = {\n address: '0x55d398326f99059fF775485246999027B3197955',\n symbol: 'USDT',\n decimals: 18,\n name: 'Tether USD',\n} as const;\n\n/**\n * BSC-USDC (USD Coin) Token Configuration\n * @see https://bscscan.com/token/0x8AC76a51cc950d9822D68b83fE1Ad97B32Cd580d\n */\nexport const BSC_USDC: TokenConfig = {\n address: '0x8AC76a51cc950d9822D68b83fE1Ad97B32Cd580d',\n symbol: 'USDC',\n decimals: 18,\n name: 'USD Coin',\n} as const;\n\n/**\n * BSC-BUSD (Binance USD) Token Configuration\n * @see https://bscscan.com/token/0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56\n */\nexport const BSC_BUSD: TokenConfig = {\n address: '0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56',\n symbol: 'BUSD',\n decimals: 18,\n name: 'Binance USD',\n} as const;\n\n/**\n * Wrapped BNB (WBNB) Token Configuration\n * @see https://bscscan.com/token/0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c\n */\nexport const BSC_WBNB: TokenConfig = {\n address: '0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c',\n symbol: 'BNB',\n decimals: 18,\n name: 'Wrapped BNB',\n} as const;\n\n/**\n * Default token for payments (BSC-USDT)\n */\nexport const BSC_DEFAULT_TOKEN = BSC_USDT;\n\n/**\n * All supported tokens on BSC\n */\nexport const BSC_TOKENS = {\n USDT: BSC_USDT,\n USDC: BSC_USDC,\n BUSD: BSC_BUSD,\n WBNB: BSC_WBNB,\n} as const;\n\n/**\n * Token address to config mapping for quick lookup\n */\nexport const BSC_TOKEN_BY_ADDRESS: Record<string, TokenConfig> = {\n [BSC_USDT.address.toLowerCase()]: BSC_USDT,\n [BSC_USDC.address.toLowerCase()]: BSC_USDC,\n [BSC_BUSD.address.toLowerCase()]: BSC_BUSD,\n [BSC_WBNB.address.toLowerCase()]: BSC_WBNB,\n};\n\n// ============================================================================\n// Network Configuration\n// ============================================================================\n\n/**\n * Complete BNB Smart Chain network configuration\n */\nexport const BSC_NETWORK_CONFIG: NetworkConfig = {\n caipId: BSC_CAIP_ID,\n chainId: BSC_CHAIN_ID,\n name: 'BNB Smart Chain',\n rpcUrl: BSC_DEFAULT_RPC,\n nativeCurrency: {\n name: 'BNB',\n symbol: 'BNB',\n decimals: 18,\n },\n blockExplorer: BSC_BLOCK_EXPLORER,\n tokens: BSC_TOKENS,\n} as const;\n\n// ============================================================================\n// Utility Functions\n// ============================================================================\n\n/**\n * Get token configuration by address\n */\nexport function getTokenByAddress(address: string): TokenConfig | undefined {\n return BSC_TOKEN_BY_ADDRESS[address.toLowerCase()];\n}\n\n/**\n * Get token configuration by symbol\n */\nexport function getTokenBySymbol(symbol: string): TokenConfig | undefined {\n const upperSymbol = symbol.toUpperCase();\n return BSC_TOKENS[upperSymbol as keyof typeof BSC_TOKENS];\n}\n\n/**\n * Check if a token address is supported on BSC\n */\nexport function isTokenSupported(address: string): boolean {\n return address.toLowerCase() in BSC_TOKEN_BY_ADDRESS;\n}\n\n/**\n * Format token amount from wei to human-readable string\n */\nexport function formatTokenAmount(\n amount: bigint | string,\n tokenAddress: string\n): string {\n const token = getTokenByAddress(tokenAddress);\n const decimals = token?.decimals ?? 18;\n const amountBigInt = typeof amount === 'string' ? BigInt(amount) : amount;\n \n const divisor = BigInt(10 ** decimals);\n const wholePart = amountBigInt / divisor;\n const fractionalPart = amountBigInt % divisor;\n \n const fractionalStr = fractionalPart.toString().padStart(decimals, '0');\n // Trim trailing zeros but keep at least 2 decimal places\n const trimmedFractional = fractionalStr.replace(/0+$/, '').padEnd(2, '0');\n \n return `${wholePart}.${trimmedFractional}`;\n}\n\n/**\n * Parse human-readable amount to wei\n */\nexport function parseTokenAmount(\n amount: string,\n tokenAddress: string\n): bigint {\n const token = getTokenByAddress(tokenAddress);\n const decimals = token?.decimals ?? 18;\n \n const [whole, fractional = ''] = amount.split('.');\n const paddedFractional = fractional.padEnd(decimals, '0').slice(0, decimals);\n \n return BigInt(whole + paddedFractional);\n}\n\n/**\n * Get BscScan URL for a transaction\n */\nexport function getTxUrl(txHash: string): string {\n return `${BSC_BLOCK_EXPLORER}/tx/${txHash}`;\n}\n\n/**\n * Get BscScan URL for an address\n */\nexport function getAddressUrl(address: string): string {\n return `${BSC_BLOCK_EXPLORER}/address/${address}`;\n}\n\n/**\n * Get BscScan URL for a token\n */\nexport function getTokenUrl(tokenAddress: string): string {\n return `${BSC_BLOCK_EXPLORER}/token/${tokenAddress}`;\n}\n","// Re-export all BNB chain configurations\nexport * from './bnb.js';\n\n// Export a registry of all supported networks for future expansion\nimport { BSC_NETWORK_CONFIG, BSC_CAIP_ID } from './bnb.js';\nimport type { NetworkConfig } from '../types/index.js';\n\n/**\n * Registry of all supported networks\n * Currently only BSC, but structured for future expansion\n */\nexport const SUPPORTED_NETWORKS: Record<string, NetworkConfig> = {\n [BSC_CAIP_ID]: BSC_NETWORK_CONFIG,\n} as const;\n\n/**\n * Get network configuration by CAIP-2 ID\n */\nexport function getNetworkConfig(caipId: string): NetworkConfig | undefined {\n return SUPPORTED_NETWORKS[caipId];\n}\n\n/**\n * Check if a network is supported\n */\nexport function isNetworkSupported(caipId: string): boolean {\n return caipId in SUPPORTED_NETWORKS;\n}\n\n/**\n * Get all supported network IDs\n */\nexport function getSupportedNetworkIds(): string[] {\n return Object.keys(SUPPORTED_NETWORKS);\n}\n"]}
@@ -0,0 +1,23 @@
1
+ export { d as BSC_BLOCK_EXPLORER, g as BSC_BUSD, a as BSC_CAIP_ID, B as BSC_CHAIN_ID, c as BSC_DEFAULT_RPC, i as BSC_DEFAULT_TOKEN, l as BSC_NETWORK_CONFIG, b as BSC_RPC_URLS, j as BSC_TOKENS, k as BSC_TOKEN_BY_ADDRESS, f as BSC_USDC, e as BSC_USDT, h as BSC_WBNB, p as formatTokenAmount, s as getAddressUrl, m as getTokenByAddress, n as getTokenBySymbol, t as getTokenUrl, r as getTxUrl, o as isTokenSupported, q as parseTokenAmount } from '../bnb-BhqGnGQ1.cjs';
2
+ import { NetworkConfig } from '../types/index.cjs';
3
+ import 'zod';
4
+
5
+ /**
6
+ * Registry of all supported networks
7
+ * Currently only BSC, but structured for future expansion
8
+ */
9
+ declare const SUPPORTED_NETWORKS: Record<string, NetworkConfig>;
10
+ /**
11
+ * Get network configuration by CAIP-2 ID
12
+ */
13
+ declare function getNetworkConfig(caipId: string): NetworkConfig | undefined;
14
+ /**
15
+ * Check if a network is supported
16
+ */
17
+ declare function isNetworkSupported(caipId: string): boolean;
18
+ /**
19
+ * Get all supported network IDs
20
+ */
21
+ declare function getSupportedNetworkIds(): string[];
22
+
23
+ export { SUPPORTED_NETWORKS, getNetworkConfig, getSupportedNetworkIds, isNetworkSupported };
@@ -0,0 +1,23 @@
1
+ export { d as BSC_BLOCK_EXPLORER, g as BSC_BUSD, a as BSC_CAIP_ID, B as BSC_CHAIN_ID, c as BSC_DEFAULT_RPC, i as BSC_DEFAULT_TOKEN, l as BSC_NETWORK_CONFIG, b as BSC_RPC_URLS, j as BSC_TOKENS, k as BSC_TOKEN_BY_ADDRESS, f as BSC_USDC, e as BSC_USDT, h as BSC_WBNB, p as formatTokenAmount, s as getAddressUrl, m as getTokenByAddress, n as getTokenBySymbol, t as getTokenUrl, r as getTxUrl, o as isTokenSupported, q as parseTokenAmount } from '../bnb-SixQcDqs.js';
2
+ import { NetworkConfig } from '../types/index.js';
3
+ import 'zod';
4
+
5
+ /**
6
+ * Registry of all supported networks
7
+ * Currently only BSC, but structured for future expansion
8
+ */
9
+ declare const SUPPORTED_NETWORKS: Record<string, NetworkConfig>;
10
+ /**
11
+ * Get network configuration by CAIP-2 ID
12
+ */
13
+ declare function getNetworkConfig(caipId: string): NetworkConfig | undefined;
14
+ /**
15
+ * Check if a network is supported
16
+ */
17
+ declare function isNetworkSupported(caipId: string): boolean;
18
+ /**
19
+ * Get all supported network IDs
20
+ */
21
+ declare function getSupportedNetworkIds(): string[];
22
+
23
+ export { SUPPORTED_NETWORKS, getNetworkConfig, getSupportedNetworkIds, isNetworkSupported };
@@ -0,0 +1,121 @@
1
+ /* @wazabiai/x402 - x402 v2 Payment Protocol SDK */
2
+
3
+ // src/chains/bnb.ts
4
+ var BSC_CHAIN_ID = 56;
5
+ var BSC_CAIP_ID = "eip155:56";
6
+ var BSC_RPC_URLS = [
7
+ "https://bsc-dataseed.binance.org",
8
+ "https://bsc-dataseed1.binance.org",
9
+ "https://bsc-dataseed2.binance.org",
10
+ "https://bsc-dataseed3.binance.org",
11
+ "https://bsc-dataseed4.binance.org",
12
+ "https://bsc-dataseed1.defibit.io",
13
+ "https://bsc-dataseed1.ninicoin.io"
14
+ ];
15
+ var BSC_DEFAULT_RPC = BSC_RPC_URLS[0];
16
+ var BSC_BLOCK_EXPLORER = "https://bscscan.com";
17
+ var BSC_USDT = {
18
+ address: "0x55d398326f99059fF775485246999027B3197955",
19
+ symbol: "USDT",
20
+ decimals: 18,
21
+ name: "Tether USD"
22
+ };
23
+ var BSC_USDC = {
24
+ address: "0x8AC76a51cc950d9822D68b83fE1Ad97B32Cd580d",
25
+ symbol: "USDC",
26
+ decimals: 18,
27
+ name: "USD Coin"
28
+ };
29
+ var BSC_BUSD = {
30
+ address: "0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56",
31
+ symbol: "BUSD",
32
+ decimals: 18,
33
+ name: "Binance USD"
34
+ };
35
+ var BSC_WBNB = {
36
+ address: "0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c",
37
+ symbol: "BNB",
38
+ decimals: 18,
39
+ name: "Wrapped BNB"
40
+ };
41
+ var BSC_DEFAULT_TOKEN = BSC_USDT;
42
+ var BSC_TOKENS = {
43
+ USDT: BSC_USDT,
44
+ USDC: BSC_USDC,
45
+ BUSD: BSC_BUSD,
46
+ WBNB: BSC_WBNB
47
+ };
48
+ var BSC_TOKEN_BY_ADDRESS = {
49
+ [BSC_USDT.address.toLowerCase()]: BSC_USDT,
50
+ [BSC_USDC.address.toLowerCase()]: BSC_USDC,
51
+ [BSC_BUSD.address.toLowerCase()]: BSC_BUSD,
52
+ [BSC_WBNB.address.toLowerCase()]: BSC_WBNB
53
+ };
54
+ var BSC_NETWORK_CONFIG = {
55
+ caipId: BSC_CAIP_ID,
56
+ chainId: BSC_CHAIN_ID,
57
+ name: "BNB Smart Chain",
58
+ rpcUrl: BSC_DEFAULT_RPC,
59
+ nativeCurrency: {
60
+ name: "BNB",
61
+ symbol: "BNB",
62
+ decimals: 18
63
+ },
64
+ blockExplorer: BSC_BLOCK_EXPLORER,
65
+ tokens: BSC_TOKENS
66
+ };
67
+ function getTokenByAddress(address) {
68
+ return BSC_TOKEN_BY_ADDRESS[address.toLowerCase()];
69
+ }
70
+ function getTokenBySymbol(symbol) {
71
+ const upperSymbol = symbol.toUpperCase();
72
+ return BSC_TOKENS[upperSymbol];
73
+ }
74
+ function isTokenSupported(address) {
75
+ return address.toLowerCase() in BSC_TOKEN_BY_ADDRESS;
76
+ }
77
+ function formatTokenAmount(amount, tokenAddress) {
78
+ const token = getTokenByAddress(tokenAddress);
79
+ const decimals = token?.decimals ?? 18;
80
+ const amountBigInt = typeof amount === "string" ? BigInt(amount) : amount;
81
+ const divisor = BigInt(10 ** decimals);
82
+ const wholePart = amountBigInt / divisor;
83
+ const fractionalPart = amountBigInt % divisor;
84
+ const fractionalStr = fractionalPart.toString().padStart(decimals, "0");
85
+ const trimmedFractional = fractionalStr.replace(/0+$/, "").padEnd(2, "0");
86
+ return `${wholePart}.${trimmedFractional}`;
87
+ }
88
+ function parseTokenAmount(amount, tokenAddress) {
89
+ const token = getTokenByAddress(tokenAddress);
90
+ const decimals = token?.decimals ?? 18;
91
+ const [whole, fractional = ""] = amount.split(".");
92
+ const paddedFractional = fractional.padEnd(decimals, "0").slice(0, decimals);
93
+ return BigInt(whole + paddedFractional);
94
+ }
95
+ function getTxUrl(txHash) {
96
+ return `${BSC_BLOCK_EXPLORER}/tx/${txHash}`;
97
+ }
98
+ function getAddressUrl(address) {
99
+ return `${BSC_BLOCK_EXPLORER}/address/${address}`;
100
+ }
101
+ function getTokenUrl(tokenAddress) {
102
+ return `${BSC_BLOCK_EXPLORER}/token/${tokenAddress}`;
103
+ }
104
+
105
+ // src/chains/index.ts
106
+ var SUPPORTED_NETWORKS = {
107
+ [BSC_CAIP_ID]: BSC_NETWORK_CONFIG
108
+ };
109
+ function getNetworkConfig(caipId) {
110
+ return SUPPORTED_NETWORKS[caipId];
111
+ }
112
+ function isNetworkSupported(caipId) {
113
+ return caipId in SUPPORTED_NETWORKS;
114
+ }
115
+ function getSupportedNetworkIds() {
116
+ return Object.keys(SUPPORTED_NETWORKS);
117
+ }
118
+
119
+ export { BSC_BLOCK_EXPLORER, BSC_BUSD, BSC_CAIP_ID, BSC_CHAIN_ID, BSC_DEFAULT_RPC, BSC_DEFAULT_TOKEN, BSC_NETWORK_CONFIG, BSC_RPC_URLS, BSC_TOKENS, BSC_TOKEN_BY_ADDRESS, BSC_USDC, BSC_USDT, BSC_WBNB, SUPPORTED_NETWORKS, formatTokenAmount, getAddressUrl, getNetworkConfig, getSupportedNetworkIds, getTokenByAddress, getTokenBySymbol, getTokenUrl, getTxUrl, isNetworkSupported, isTokenSupported, parseTokenAmount };
120
+ //# sourceMappingURL=index.js.map
121
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/chains/bnb.ts","../../src/chains/index.ts"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["import type { NetworkConfig, TokenConfig } from '../types/index.js';\n\n// ============================================================================\n// BNB Smart Chain Configuration\n// ============================================================================\n\n/**\n * BNB Smart Chain (BSC) Mainnet Chain ID\n */\nexport const BSC_CHAIN_ID = 56 as const;\n\n/**\n * BNB Smart Chain CAIP-2 Identifier\n */\nexport const BSC_CAIP_ID = 'eip155:56' as const;\n\n/**\n * BNB Smart Chain public RPC endpoints\n * Using multiple for fallback support\n */\nexport const BSC_RPC_URLS = [\n 'https://bsc-dataseed.binance.org',\n 'https://bsc-dataseed1.binance.org',\n 'https://bsc-dataseed2.binance.org',\n 'https://bsc-dataseed3.binance.org',\n 'https://bsc-dataseed4.binance.org',\n 'https://bsc-dataseed1.defibit.io',\n 'https://bsc-dataseed1.ninicoin.io',\n] as const;\n\n/**\n * Default BSC RPC URL\n */\nexport const BSC_DEFAULT_RPC = BSC_RPC_URLS[0];\n\n/**\n * BscScan block explorer URL\n */\nexport const BSC_BLOCK_EXPLORER = 'https://bscscan.com' as const;\n\n// ============================================================================\n// Token Configurations\n// ============================================================================\n\n/**\n * BSC-USDT (Tether USD) Token Configuration\n * @see https://bscscan.com/token/0x55d398326f99059fF775485246999027B3197955\n */\nexport const BSC_USDT: TokenConfig = {\n address: '0x55d398326f99059fF775485246999027B3197955',\n symbol: 'USDT',\n decimals: 18,\n name: 'Tether USD',\n} as const;\n\n/**\n * BSC-USDC (USD Coin) Token Configuration\n * @see https://bscscan.com/token/0x8AC76a51cc950d9822D68b83fE1Ad97B32Cd580d\n */\nexport const BSC_USDC: TokenConfig = {\n address: '0x8AC76a51cc950d9822D68b83fE1Ad97B32Cd580d',\n symbol: 'USDC',\n decimals: 18,\n name: 'USD Coin',\n} as const;\n\n/**\n * BSC-BUSD (Binance USD) Token Configuration\n * @see https://bscscan.com/token/0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56\n */\nexport const BSC_BUSD: TokenConfig = {\n address: '0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56',\n symbol: 'BUSD',\n decimals: 18,\n name: 'Binance USD',\n} as const;\n\n/**\n * Wrapped BNB (WBNB) Token Configuration\n * @see https://bscscan.com/token/0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c\n */\nexport const BSC_WBNB: TokenConfig = {\n address: '0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c',\n symbol: 'BNB',\n decimals: 18,\n name: 'Wrapped BNB',\n} as const;\n\n/**\n * Default token for payments (BSC-USDT)\n */\nexport const BSC_DEFAULT_TOKEN = BSC_USDT;\n\n/**\n * All supported tokens on BSC\n */\nexport const BSC_TOKENS = {\n USDT: BSC_USDT,\n USDC: BSC_USDC,\n BUSD: BSC_BUSD,\n WBNB: BSC_WBNB,\n} as const;\n\n/**\n * Token address to config mapping for quick lookup\n */\nexport const BSC_TOKEN_BY_ADDRESS: Record<string, TokenConfig> = {\n [BSC_USDT.address.toLowerCase()]: BSC_USDT,\n [BSC_USDC.address.toLowerCase()]: BSC_USDC,\n [BSC_BUSD.address.toLowerCase()]: BSC_BUSD,\n [BSC_WBNB.address.toLowerCase()]: BSC_WBNB,\n};\n\n// ============================================================================\n// Network Configuration\n// ============================================================================\n\n/**\n * Complete BNB Smart Chain network configuration\n */\nexport const BSC_NETWORK_CONFIG: NetworkConfig = {\n caipId: BSC_CAIP_ID,\n chainId: BSC_CHAIN_ID,\n name: 'BNB Smart Chain',\n rpcUrl: BSC_DEFAULT_RPC,\n nativeCurrency: {\n name: 'BNB',\n symbol: 'BNB',\n decimals: 18,\n },\n blockExplorer: BSC_BLOCK_EXPLORER,\n tokens: BSC_TOKENS,\n} as const;\n\n// ============================================================================\n// Utility Functions\n// ============================================================================\n\n/**\n * Get token configuration by address\n */\nexport function getTokenByAddress(address: string): TokenConfig | undefined {\n return BSC_TOKEN_BY_ADDRESS[address.toLowerCase()];\n}\n\n/**\n * Get token configuration by symbol\n */\nexport function getTokenBySymbol(symbol: string): TokenConfig | undefined {\n const upperSymbol = symbol.toUpperCase();\n return BSC_TOKENS[upperSymbol as keyof typeof BSC_TOKENS];\n}\n\n/**\n * Check if a token address is supported on BSC\n */\nexport function isTokenSupported(address: string): boolean {\n return address.toLowerCase() in BSC_TOKEN_BY_ADDRESS;\n}\n\n/**\n * Format token amount from wei to human-readable string\n */\nexport function formatTokenAmount(\n amount: bigint | string,\n tokenAddress: string\n): string {\n const token = getTokenByAddress(tokenAddress);\n const decimals = token?.decimals ?? 18;\n const amountBigInt = typeof amount === 'string' ? BigInt(amount) : amount;\n \n const divisor = BigInt(10 ** decimals);\n const wholePart = amountBigInt / divisor;\n const fractionalPart = amountBigInt % divisor;\n \n const fractionalStr = fractionalPart.toString().padStart(decimals, '0');\n // Trim trailing zeros but keep at least 2 decimal places\n const trimmedFractional = fractionalStr.replace(/0+$/, '').padEnd(2, '0');\n \n return `${wholePart}.${trimmedFractional}`;\n}\n\n/**\n * Parse human-readable amount to wei\n */\nexport function parseTokenAmount(\n amount: string,\n tokenAddress: string\n): bigint {\n const token = getTokenByAddress(tokenAddress);\n const decimals = token?.decimals ?? 18;\n \n const [whole, fractional = ''] = amount.split('.');\n const paddedFractional = fractional.padEnd(decimals, '0').slice(0, decimals);\n \n return BigInt(whole + paddedFractional);\n}\n\n/**\n * Get BscScan URL for a transaction\n */\nexport function getTxUrl(txHash: string): string {\n return `${BSC_BLOCK_EXPLORER}/tx/${txHash}`;\n}\n\n/**\n * Get BscScan URL for an address\n */\nexport function getAddressUrl(address: string): string {\n return `${BSC_BLOCK_EXPLORER}/address/${address}`;\n}\n\n/**\n * Get BscScan URL for a token\n */\nexport function getTokenUrl(tokenAddress: string): string {\n return `${BSC_BLOCK_EXPLORER}/token/${tokenAddress}`;\n}\n","// Re-export all BNB chain configurations\nexport * from './bnb.js';\n\n// Export a registry of all supported networks for future expansion\nimport { BSC_NETWORK_CONFIG, BSC_CAIP_ID } from './bnb.js';\nimport type { NetworkConfig } from '../types/index.js';\n\n/**\n * Registry of all supported networks\n * Currently only BSC, but structured for future expansion\n */\nexport const SUPPORTED_NETWORKS: Record<string, NetworkConfig> = {\n [BSC_CAIP_ID]: BSC_NETWORK_CONFIG,\n} as const;\n\n/**\n * Get network configuration by CAIP-2 ID\n */\nexport function getNetworkConfig(caipId: string): NetworkConfig | undefined {\n return SUPPORTED_NETWORKS[caipId];\n}\n\n/**\n * Check if a network is supported\n */\nexport function isNetworkSupported(caipId: string): boolean {\n return caipId in SUPPORTED_NETWORKS;\n}\n\n/**\n * Get all supported network IDs\n */\nexport function getSupportedNetworkIds(): string[] {\n return Object.keys(SUPPORTED_NETWORKS);\n}\n"]}