@zkp2p/pay-shared 0.0.2 → 2.0.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.
package/dist/types.js CHANGED
@@ -1,3 +1,4 @@
1
+ import { SupportedChainsMap } from './chains.js';
1
2
  export const PaymentPlatform = {
2
3
  VENMO: 'venmo',
3
4
  CASHAPP: 'cashapp',
@@ -7,10 +8,18 @@ export const PaymentPlatform = {
7
8
  PAYPAL: 'paypal',
8
9
  MONZO: 'monzo',
9
10
  N26: 'n26',
11
+ CHIME: 'chime',
10
12
  };
13
+ const PAYMENT_PLATFORM_VALUES = new Set(Object.values(PaymentPlatform));
14
+ /**
15
+ * Type guard for PaymentPlatform values.
16
+ * Returns true if `value` is one of the known PaymentPlatform enum values.
17
+ */
18
+ export function isPaymentPlatform(value) {
19
+ return typeof value === 'string' && PAYMENT_PLATFORM_VALUES.has(value);
20
+ }
11
21
  // Supported chains for USDC destination
12
22
  // Re-exported from chains.ts for backward compatibility
13
- import { SupportedChainsMap } from './chains.js';
14
23
  export const SupportedChains = SupportedChainsMap;
15
24
  // Checkout mode determines how amounts are specified
16
25
  export const CheckoutMode = {
@@ -38,15 +47,64 @@ export const SessionStatus = {
38
47
  CREATED: 'CREATED',
39
48
  ACTIVE: 'ACTIVE',
40
49
  COMPLETED: 'COMPLETED',
50
+ FAILED: 'FAILED',
51
+ REFUNDED: 'REFUNDED',
41
52
  EXPIRED: 'EXPIRED',
42
53
  CANCELLED: 'CANCELLED',
43
54
  };
55
+ export const CheckoutMethod = {
56
+ FIAT: 'fiat',
57
+ CRYPTO: 'crypto',
58
+ };
59
+ // ============ Canonical Checkout API ============
60
+ export const FeePayer = {
61
+ MERCHANT: 'MERCHANT',
62
+ PAYEE: 'PAYEE',
63
+ };
64
+ export const MerchantPaymentFlowMode = {
65
+ EXCLUSIVE_SAR: 'EXCLUSIVE_SAR',
66
+ PREFER_SAR: 'PREFER_SAR',
67
+ PREFER_BUYER_TEE: 'PREFER_BUYER_TEE',
68
+ EXCLUSIVE_BUYER_TEE: 'EXCLUSIVE_BUYER_TEE',
69
+ };
70
+ export const CheckoutOrderStatus = {
71
+ CREATED: 'CREATED',
72
+ PARTIALLY_FULFILLED: 'PARTIALLY_FULFILLED',
73
+ FULFILLED: 'FULFILLED',
74
+ CANCELLED: 'CANCELLED',
75
+ };
76
+ export const CheckoutOrderRefundStatus = {
77
+ NONE: 'NONE',
78
+ PENDING: 'PENDING',
79
+ COMPLETED: 'COMPLETED',
80
+ };
81
+ export const CheckoutPaymentStatus = {
82
+ CREATED: 'CREATED',
83
+ SETTLED: 'SETTLED',
84
+ CANCELLED: 'CANCELLED',
85
+ EXPIRED: 'EXPIRED',
86
+ FAILED: 'FAILED',
87
+ };
88
+ export const CheckoutPaymentMemoPolicy = {
89
+ NONE: 'NONE',
90
+ REQUIRED: 'REQUIRED',
91
+ EMPTY: 'EMPTY',
92
+ };
93
+ export const DashboardPrivyApp = {
94
+ LEGACY: 'LEGACY',
95
+ V1: 'V1',
96
+ };
97
+ export const MerchantMigrationStatus = {
98
+ PENDING: 'PENDING',
99
+ MIGRATING: 'MIGRATING',
100
+ COMPLETE: 'COMPLETE',
101
+ FAILED: 'FAILED',
102
+ };
44
103
  // Structured error codes for Order failures
45
104
  export const OrderErrorCode = {
46
105
  // Proof verification errors
47
106
  PROOF_INVALID: 'PROOF_INVALID', // Proof data failed attestation verification
48
107
  PROOF_EXPIRED: 'PROOF_EXPIRED', // Proof timestamp too old
49
- PROOF_AMOUNT_MISMATCH: 'PROOF_AMOUNT_MISMATCH', // Payment amount doesn't match intent
50
108
  PROOF_RECIPIENT_MISMATCH: 'PROOF_RECIPIENT_MISMATCH', // Payment recipient doesn't match
51
109
  // Transaction errors
52
110
  FULFILL_TIMEOUT: 'FULFILL_TIMEOUT', // On-chain tx timed out
@@ -58,7 +116,6 @@ export const OrderErrorCode = {
58
116
  RELAYER_ERROR: 'RELAYER_ERROR', // Relayer submission failed
59
117
  ATTESTATION_ERROR: 'ATTESTATION_ERROR', // Attestation service unavailable
60
118
  // Bridge errors (cross-chain)
61
- BRIDGE_QUOTE_ERROR: 'BRIDGE_QUOTE_ERROR', // Failed to get bridge quote
62
119
  BRIDGE_TIMEOUT: 'BRIDGE_TIMEOUT', // Bridge fill timed out
63
120
  // Fee threshold errors (exact-fiat mode)
64
121
  FEE_THRESHOLD_EXCEEDED: 'FEE_THRESHOLD_EXCEEDED', // Quote fee exceeds merchant's max
@@ -70,18 +127,26 @@ export const MerchantEnvironment = {
70
127
  LIVE: 'LIVE',
71
128
  SANDBOX: 'SANDBOX',
72
129
  };
130
+ export const TrancheCurrency = {
131
+ USD: 'USD',
132
+ USDC: 'USDC',
133
+ };
73
134
  // ============ Webhook Types ============
74
135
  export const WebhookEventType = {
75
- // Order lifecycle events
76
- ORDER_CREATED: 'order.created',
77
- ORDER_PAYMENT_SENT: 'order.payment_sent',
78
- ORDER_FULFILLED: 'order.fulfilled',
79
- ORDER_FAILED: 'order.failed',
80
- ORDER_EXPIRED: 'order.expired',
81
- // Session lifecycle events
82
- SESSION_STARTED: 'session.started',
83
- SESSION_COMPLETED: 'session.completed',
84
- SESSION_ABANDONED: 'session.abandoned',
136
+ ORDER_CREATED: 'ORDER_CREATED',
137
+ ORDER_FULFILLED: 'ORDER_FULFILLED',
138
+ ORDER_CANCELLED: 'ORDER_CANCELLED',
139
+ PAYMENT_CREATED: 'PAYMENT_CREATED',
140
+ PAYMENT_SETTLED: 'PAYMENT_SETTLED',
141
+ PAYMENT_CANCELLED: 'PAYMENT_CANCELLED',
142
+ PAYMENT_EXPIRED: 'PAYMENT_EXPIRED',
143
+ PAYMENT_FAILED: 'PAYMENT_FAILED',
144
+ REFUND_PENDING: 'REFUND_PENDING',
145
+ REFUND_COMPLETED: 'REFUND_COMPLETED',
146
+ PAYMENT_BRIDGE_PENDING: 'PAYMENT_BRIDGE_PENDING',
147
+ PAYMENT_BRIDGE_SUBMITTED: 'PAYMENT_BRIDGE_SUBMITTED',
148
+ PAYMENT_BRIDGE_COMPLETED: 'PAYMENT_BRIDGE_COMPLETED',
149
+ PAYMENT_BRIDGE_FAILED: 'PAYMENT_BRIDGE_FAILED',
85
150
  };
86
151
  export const WebhookDeliveryStatus = {
87
152
  PENDING: 'PENDING',
package/package.json CHANGED
@@ -1,9 +1,30 @@
1
1
  {
2
2
  "name": "@zkp2p/pay-shared",
3
- "version": "0.0.2",
3
+ "version": "2.0.0",
4
+ "description": "Shared TypeScript types, enums, and chain utilities used by ZKP2P Pay API, SDK, and frontend apps.",
4
5
  "type": "module",
5
6
  "main": "dist/index.js",
6
7
  "types": "dist/index.d.ts",
8
+ "license": "UNLICENSED",
9
+ "repository": {
10
+ "type": "git",
11
+ "url": "git+https://github.com/zkp2p/pay.git",
12
+ "directory": "packages/shared"
13
+ },
14
+ "bugs": {
15
+ "url": "https://github.com/zkp2p/pay/issues"
16
+ },
17
+ "homepage": "https://github.com/zkp2p/pay/tree/main/packages/shared#readme",
18
+ "keywords": [
19
+ "zkp2p",
20
+ "pay",
21
+ "shared",
22
+ "types",
23
+ "typescript"
24
+ ],
25
+ "publishConfig": {
26
+ "access": "public"
27
+ },
7
28
  "exports": {
8
29
  ".": {
9
30
  "types": "./dist/index.d.ts",
@@ -11,11 +32,16 @@
11
32
  }
12
33
  },
13
34
  "files": [
14
- "dist",
15
- "src"
35
+ "dist"
16
36
  ],
17
37
  "scripts": {
18
- "build": "tsc -p tsconfig.json",
19
- "lint": "eslint . --ext .ts,.tsx"
38
+ "build": "rm -rf dist && tsc -p tsconfig.json",
39
+ "lint": "eslint . --ext .ts,.tsx",
40
+ "test": "vitest run",
41
+ "prepack": "npm run build",
42
+ "prepublishOnly": "npm pack --dry-run"
43
+ },
44
+ "devDependencies": {
45
+ "vitest": "^1.6.1"
20
46
  }
21
47
  }
@@ -1 +0,0 @@
1
- {"version":3,"file":"chains.d.ts","sourceRoot":"","sources":["../src/chains.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/src/chains.ts DELETED
@@ -1,417 +0,0 @@
1
- /**
2
- * Centralized chain configuration for ZKP2P Pay.
3
- *
4
- * All supported chains and their USDC addresses are defined here.
5
- * Import this module instead of duplicating chain configs in each app.
6
- */
7
-
8
- // Chain IDs
9
- export const BASE_CHAIN_ID = 8453;
10
- export const HYPEREVM_CHAIN_ID = 999;
11
- export const SOLANA_CHAIN_ID = 34268394551451;
12
-
13
- export const SUPPORTED_DESTINATION_TOKEN_ALIASES = ['USDC', 'USDT'] as const;
14
- export type DestinationTokenAlias = (typeof SUPPORTED_DESTINATION_TOKEN_ALIASES)[number];
15
- export const DEFAULT_DESTINATION_TOKEN_ALIAS: DestinationTokenAlias = 'USDC';
16
-
17
- /**
18
- * Chain configuration interface.
19
- *
20
- * Note: We don't store spokePoolAddress for each chain because bridging
21
- * always originates from Base, and the hook contract handles the Base SpokePool.
22
- */
23
- export interface ChainConfig {
24
- chainId: number;
25
- name: string;
26
- shortName: string;
27
- usdcAddress: string;
28
- isOriginChain: boolean;
29
- isEvm: boolean;
30
- explorerUrl?: string;
31
- }
32
-
33
- interface DestinationTokenAddressMap {
34
- usdt?: string;
35
- }
36
-
37
- // Mainnet chain configurations
38
- export const MAINNET_CHAINS: Record<number, ChainConfig> = {
39
- // Origin chain (Base)
40
- [BASE_CHAIN_ID]: {
41
- chainId: BASE_CHAIN_ID,
42
- name: 'Base',
43
- shortName: 'BASE',
44
- usdcAddress: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913',
45
- isOriginChain: true,
46
- isEvm: true,
47
- explorerUrl: 'https://basescan.org',
48
- },
49
-
50
- // EVM Destination chains
51
- 1: {
52
- chainId: 1,
53
- name: 'Ethereum',
54
- shortName: 'ETH',
55
- usdcAddress: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48',
56
- isOriginChain: false,
57
- isEvm: true,
58
- explorerUrl: 'https://etherscan.io',
59
- },
60
- 10: {
61
- chainId: 10,
62
- name: 'Optimism',
63
- shortName: 'OP',
64
- usdcAddress: '0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85',
65
- isOriginChain: false,
66
- isEvm: true,
67
- explorerUrl: 'https://optimistic.etherscan.io',
68
- },
69
- 42161: {
70
- chainId: 42161,
71
- name: 'Arbitrum',
72
- shortName: 'ARB',
73
- usdcAddress: '0xaf88d065e77c8cC2239327C5EDb3A432268e5831',
74
- isOriginChain: false,
75
- isEvm: true,
76
- explorerUrl: 'https://arbiscan.io',
77
- },
78
- 137: {
79
- chainId: 137,
80
- name: 'Polygon',
81
- shortName: 'MATIC',
82
- usdcAddress: '0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359',
83
- isOriginChain: false,
84
- isEvm: true,
85
- explorerUrl: 'https://polygonscan.com',
86
- },
87
- 480: {
88
- chainId: 480,
89
- name: 'World Chain',
90
- shortName: 'WLD',
91
- usdcAddress: '0x79A02482A880bCE3F13e09Da970dC34db4CD24d1', // USDC.e on World Chain
92
- isOriginChain: false,
93
- isEvm: true,
94
- explorerUrl: 'https://worldscan.org',
95
- },
96
- 56: {
97
- chainId: 56,
98
- name: 'BNB Smart Chain',
99
- shortName: 'BNB',
100
- usdcAddress: '0x8AC76a51cc950d9822D68b83fE1Ad97B32Cd580d',
101
- isOriginChain: false,
102
- isEvm: true,
103
- explorerUrl: 'https://bscscan.com',
104
- },
105
- [HYPEREVM_CHAIN_ID]: {
106
- chainId: HYPEREVM_CHAIN_ID,
107
- name: 'Hyperliquid',
108
- shortName: 'HL',
109
- usdcAddress: '0xb88339CB7199b77E23DB6E890353E22632Ba630f', // Native USDC on HyperEVM
110
- isOriginChain: false,
111
- isEvm: true,
112
- explorerUrl: 'https://hyperscan.xyz',
113
- },
114
-
115
- // Non-EVM Destination chains
116
- [SOLANA_CHAIN_ID]: {
117
- chainId: SOLANA_CHAIN_ID,
118
- name: 'Solana',
119
- shortName: 'SOL',
120
- usdcAddress: 'EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v',
121
- isOriginChain: false,
122
- isEvm: false,
123
- explorerUrl: 'https://solscan.io',
124
- },
125
- };
126
-
127
- function normalizeChainSelectionKey(value: string): string {
128
- return value.trim().toLowerCase().replace(/[^a-z0-9]/g, '');
129
- }
130
-
131
- const SUPPORTED_CHAIN_IDS = Object.keys(MAINNET_CHAINS).map(Number);
132
- const SUPPORTED_CHAIN_ID_SET = new Set(SUPPORTED_CHAIN_IDS);
133
-
134
- const CHAIN_SELECTION_ALIASES: Record<string, number> = {
135
- base: 8453,
136
- ethereum: 1,
137
- eth: 1,
138
- optimism: 10,
139
- op: 10,
140
- arbitrum: 42161,
141
- arb: 42161,
142
- polygon: 137,
143
- matic: 137,
144
- world: 480,
145
- worldchain: 480,
146
- bnb: 56,
147
- bsc: 56,
148
- binancesmartchain: 56,
149
- hyperliquid: 999,
150
- hyperevm: 999,
151
- hl: 999,
152
- solana: 34268394551451,
153
- sol: 34268394551451,
154
- };
155
-
156
- for (const chainId of SUPPORTED_CHAIN_IDS) {
157
- const chainConfig = MAINNET_CHAINS[chainId];
158
- const normalizedName = normalizeChainSelectionKey(chainConfig.name);
159
- const normalizedShortName = normalizeChainSelectionKey(chainConfig.shortName);
160
-
161
- if (!(normalizedName in CHAIN_SELECTION_ALIASES)) {
162
- CHAIN_SELECTION_ALIASES[normalizedName] = chainId;
163
- }
164
- if (!(normalizedShortName in CHAIN_SELECTION_ALIASES)) {
165
- CHAIN_SELECTION_ALIASES[normalizedShortName] = chainId;
166
- }
167
- }
168
-
169
- const DESTINATION_TOKEN_ADDRESSES: Record<number, DestinationTokenAddressMap> = {
170
- // Ethereum
171
- 1: {
172
- usdt: '0xdAC17F958D2ee523a2206206994597C13D831ec7',
173
- },
174
- // Optimism
175
- 10: {
176
- usdt: '0x94b008aA00579c1307B0EF2c499aD98a8ce58e58',
177
- },
178
- // BNB Smart Chain
179
- 56: {
180
- usdt: '0x55d398326f99059fF775485246999027B3197955',
181
- },
182
- // Arbitrum
183
- 42161: {
184
- usdt: '0xFd086bC7CD5C481DCC9C85ebE478A1C0b69FCbb9',
185
- },
186
- // Polygon
187
- 137: {
188
- usdt: '0xc2132D05D31c914a87C6611C10748AEb04B58e8F',
189
- },
190
- // Hyperliquid
191
- 999: {
192
- usdt: '0xB8CE59FC3717ada4C02eaDF9682A9e934F625ebb',
193
- },
194
- };
195
-
196
- function isKnownDestinationTokenAlias(value: string): value is DestinationTokenAlias {
197
- return (SUPPORTED_DESTINATION_TOKEN_ALIASES as readonly string[]).includes(value);
198
- }
199
-
200
- /**
201
- * Normalize destination token aliases (USDC/USDT) into canonical uppercase symbols.
202
- * Returns null if the value is empty or not a known alias.
203
- */
204
- export function normalizeDestinationTokenAlias(
205
- value: string | null | undefined
206
- ): DestinationTokenAlias | null {
207
- const normalized = value?.trim().toUpperCase();
208
- if (!normalized) {
209
- return null;
210
- }
211
- return isKnownDestinationTokenAlias(normalized) ? normalized : null;
212
- }
213
-
214
- /**
215
- * Check whether a value is a supported destination token alias.
216
- */
217
- export function isDestinationTokenAlias(
218
- value: string | null | undefined
219
- ): value is DestinationTokenAlias {
220
- return normalizeDestinationTokenAlias(value) !== null;
221
- }
222
-
223
- /**
224
- * Resolve destination token alias, falling back to the hard default.
225
- */
226
- export function resolveDefaultDestinationTokenAlias(
227
- value: string | null | undefined
228
- ): DestinationTokenAlias {
229
- return normalizeDestinationTokenAlias(value) ?? DEFAULT_DESTINATION_TOKEN_ALIAS;
230
- }
231
-
232
- /**
233
- * Parse a user-provided chain selection into a supported chain ID.
234
- * Accepts numeric chain IDs as well as common aliases (e.g. "polygon", "arb", "sol").
235
- */
236
- export function parseSupportedChainSelection(value: string): number | null {
237
- const trimmed = value.trim();
238
- if (!trimmed) {
239
- return null;
240
- }
241
-
242
- if (/^\d+$/.test(trimmed)) {
243
- const parsed = Number(trimmed);
244
- return SUPPORTED_CHAIN_ID_SET.has(parsed) ? parsed : null;
245
- }
246
-
247
- const normalized = normalizeChainSelectionKey(trimmed);
248
- return CHAIN_SELECTION_ALIASES[normalized] ?? null;
249
- }
250
-
251
- /**
252
- * Get chain configurations.
253
- */
254
- export function getChainConfigs(): Record<number, ChainConfig> {
255
- return MAINNET_CHAINS;
256
- }
257
-
258
- /**
259
- * Get chain config by chain ID.
260
- */
261
- export function getChainConfig(chainId: number): ChainConfig | undefined {
262
- return getChainConfigs()[chainId];
263
- }
264
-
265
- /**
266
- * Check if chain ID is the origin chain (Base).
267
- */
268
- export function isOriginChain(chainId: number): boolean {
269
- const chain = getChainConfig(chainId);
270
- return chain?.isOriginChain ?? false;
271
- }
272
-
273
- /**
274
- * Check if chain ID is an EVM chain.
275
- */
276
- export function isEvmChain(chainId: number): boolean {
277
- const chain = getChainConfig(chainId);
278
- return chain?.isEvm ?? true; // Default to EVM if unknown
279
- }
280
-
281
- /**
282
- * Get origin chain ID for current environment.
283
- */
284
- export function getOriginChainId(): number {
285
- const chains = getChainConfigs();
286
- const originChain = Object.values(chains).find((c) => c.isOriginChain);
287
- return originChain?.chainId ?? BASE_CHAIN_ID;
288
- }
289
-
290
- /**
291
- * Get USDC address for a chain.
292
- */
293
- export function getUsdcAddress(chainId: number): string | undefined {
294
- return getChainConfig(chainId)?.usdcAddress;
295
- }
296
-
297
- /**
298
- * Resolve destination token alias to chain-specific token address.
299
- * Supported aliases:
300
- * - USDC: map to configured USDC address
301
- * - USDT: map to configured USDT address (if available)
302
- * - fallback: return token string as provided (for explicit token addresses)
303
- */
304
- export function resolveDestinationTokenAddress(
305
- destinationToken: string,
306
- destinationChainId: number
307
- ): string | null {
308
- const token = destinationToken.trim();
309
- if (!token) {
310
- return null;
311
- }
312
-
313
- const chainId = destinationChainId;
314
- const tokenAlias = normalizeDestinationTokenAlias(token);
315
- const chainAddresses = DESTINATION_TOKEN_ADDRESSES[chainId];
316
-
317
- if (tokenAlias === 'USDC') {
318
- return getUsdcAddress(chainId) ?? null;
319
- }
320
-
321
- if (tokenAlias === 'USDT') {
322
- return chainAddresses?.usdt ?? null;
323
- }
324
-
325
- return token;
326
- }
327
-
328
- /**
329
- * Get supported destination token aliases for a destination chain.
330
- * Token support is derived from resolvable token addresses for the chain.
331
- */
332
- export function getSupportedDestinationTokenAliasesForChain(
333
- destinationChainId: number
334
- ): DestinationTokenAlias[] {
335
- return SUPPORTED_DESTINATION_TOKEN_ALIASES.filter((tokenAlias) =>
336
- Boolean(resolveDestinationTokenAddress(tokenAlias, destinationChainId))
337
- );
338
- }
339
-
340
- /**
341
- * Get all supported chain IDs.
342
- */
343
- export function getSupportedChainIds(): number[] {
344
- return [...SUPPORTED_CHAIN_IDS];
345
- }
346
-
347
- /**
348
- * Get destination chain IDs (excludes origin).
349
- */
350
- export function getDestinationChainIds(): number[] {
351
- return Object.entries(getChainConfigs())
352
- .filter(([, cfg]) => !cfg.isOriginChain)
353
- .map(([id]) => Number(id));
354
- }
355
-
356
- /**
357
- * Get EVM chain IDs only.
358
- */
359
- export function getEvmChainIds(): number[] {
360
- return Object.entries(getChainConfigs())
361
- .filter(([, cfg]) => cfg.isEvm)
362
- .map(([id]) => Number(id));
363
- }
364
-
365
- /**
366
- * Get non-EVM chain IDs (e.g., Solana).
367
- */
368
- export function getNonEvmChainIds(): number[] {
369
- return Object.entries(getChainConfigs())
370
- .filter(([, cfg]) => !cfg.isEvm)
371
- .map(([id]) => Number(id));
372
- }
373
-
374
- /**
375
- * Get chain name for display.
376
- */
377
- export function getChainName(chainId: number): string {
378
- return getChainConfig(chainId)?.name ?? `Chain ${chainId}`;
379
- }
380
-
381
- /**
382
- * Get chain short name for badges/tags.
383
- */
384
- export function getChainShortName(chainId: number): string {
385
- return getChainConfig(chainId)?.shortName ?? `${chainId}`;
386
- }
387
-
388
- /**
389
- * Get explorer URL for a chain.
390
- */
391
- export function getExplorerUrl(chainId: number): string | undefined {
392
- return getChainConfig(chainId)?.explorerUrl;
393
- }
394
-
395
- /**
396
- * Array of supported chains for UI dropdowns.
397
- * Includes origin chain marked with isOrigin flag.
398
- */
399
- export const SUPPORTED_CHAINS = Object.values(MAINNET_CHAINS).map((chain) => ({
400
- chainId: chain.chainId,
401
- name: chain.name,
402
- shortName: chain.shortName,
403
- isOrigin: chain.isOriginChain,
404
- isEvm: chain.isEvm,
405
- }));
406
-
407
- /**
408
- * Array of destination chains only (excludes Base).
409
- */
410
- export const DESTINATION_CHAINS = SUPPORTED_CHAINS.filter((c) => !c.isOrigin);
411
-
412
- /**
413
- * Mapping of chain ID to name for backward compatibility.
414
- */
415
- export const SupportedChainsMap = Object.fromEntries(
416
- Object.entries(MAINNET_CHAINS).map(([id, cfg]) => [Number(id), cfg.name])
417
- ) as Record<number, string>;
package/src/index.d.ts DELETED
@@ -1,2 +0,0 @@
1
- export * from './types.js';
2
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC"}
package/src/index.js DELETED
@@ -1 +0,0 @@
1
- export * from './types.js';
package/src/index.ts DELETED
@@ -1,2 +0,0 @@
1
- export * from './types.js';
2
- export * from './chains.js';