@snowbridge/registry 0.4.0 → 0.4.1-beta.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.
@@ -70,8 +70,8 @@ const SNOWBRIDGE_ENV: { [env: string]: Environment } = {
70
70
  "3369": "wss://paseo-muse-rpc.polkadot.io",
71
71
  "2043": `wss://parachain-testnet-rpc.origin-trail.network`,
72
72
  },
73
- gatewayContract: "0x1607C1368bc943130258318c91bBd8cFf3D063E6",
74
- beefyContract: "0x2c780945beb1241fE9c645800110cb9C4bBbb639",
73
+ gatewayContract: "0x1607c1368bc943130258318c91bbd8cff3d063e6",
74
+ beefyContract: "0x2c780945beb1241fe9c645800110cb9c4bbbb639",
75
75
  assetHubParaId: 1000,
76
76
  bridgeHubParaId: 1002,
77
77
  v2_parachains: [1000],
@@ -93,11 +93,13 @@ const SNOWBRIDGE_ENV: { [env: string]: Environment } = {
93
93
  "1": "https://ethereum-rpc.publicnode.com",
94
94
  "1284": "https://rpc.api.moonbeam.network",
95
95
  "8453": "https://base-rpc.publicnode.com",
96
+ "42161": "https://arbitrum-one-rpc.publicnode.com",
97
+ "10": "https://optimism-rpc.publicnode.com",
96
98
  },
97
99
  relaychainUrl: "https://polkadot-rpc.n.dwellir.com",
98
100
  parachains: {
99
- "1000": "wss://asset-hub-polkadot-rpc.n.dwellir.com",
100
- "1002": "https://bridge-hub-polkadot-rpc.n.dwellir.com",
101
+ "1000": "wss://polkadot-asset-hub-rpc.polkadot.io",
102
+ "1002": "wss://polkadot-bridge-hub-rpc.polkadot.io",
101
103
  "3369": "wss://polkadot-mythos-rpc.polkadot.io",
102
104
  "2034": "wss://hydration-rpc.n.dwellir.com",
103
105
  "2030": "wss://bifrost-polkadot.ibp.network",
@@ -108,12 +110,12 @@ const SNOWBRIDGE_ENV: { [env: string]: Environment } = {
108
110
  //"3397": "wss://rpc.jamton.network",
109
111
  },
110
112
  gatewayContract: "0x27ca963c279c93801941e1eb8799c23f407d68e7",
111
- beefyContract: "0x1817874feAb3ce053d0F40AbC23870DB35C2AFfc",
113
+ beefyContract: "0x1817874feab3ce053d0f40abc23870db35c2affc",
112
114
  assetHubParaId: 1000,
113
115
  bridgeHubParaId: 1002,
114
116
  v2_parachains: [1000],
115
117
  indexerGraphQlUrl:
116
- "https://snowbridge.squids.live/snowbridge-subsquid-polkadot@v2/api/graphql",
118
+ "https://subsquid.snowbridge.network/graphql",
117
119
  kusama: {
118
120
  assetHubParaId: 1000,
119
121
  bridgeHubParaId: 1002,
@@ -134,14 +136,14 @@ const SNOWBRIDGE_ENV: { [env: string]: Environment } = {
134
136
  },
135
137
  l2Bridge: {
136
138
  acrossAPIUrl: "https://app.across.to/api",
137
- l1AdapterAddress: "0x313E8c9Fb47613f2B1A436bE978c2BB75727fcC5",
138
- l1HandlerAddress: "0x924a9f036260DdD5808007E1AA95f08eD08aA569",
139
+ l1AdapterAddress: "0xd3b11c36404b092645522b682832fcdee07d2668",
140
+ l1HandlerAddress: "0x924a9f036260ddd5808007e1aa95f08ed08aa569",
139
141
  l1FeeTokenAddress: "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2",
140
- l1SwapQuoterAddress: "0x61fFE014bA17989E743c5F6cB21bF9697530B21e",
141
- l1SwapRouterAddress: "0xE592427A0AEce92De3Edee1F18E0157C05861564",
142
+ l1SwapQuoterAddress: "0x61ffe014ba17989e743c5f6cb21bf9697530b21e",
143
+ l1SwapRouterAddress: "0xe592427a0aece92de3edee1f18e0157c05861564",
142
144
  l2Chains: {
143
145
  "8453": {
144
- adapterAddress: "0xCd5d2c665E3AC84bF5c67FE7a0C48748dA40db2F",
146
+ adapterAddress: "0x07fe4E7340976FC873B74bAfe3C3e5b0e01f3665".toLowerCase(),
145
147
  feeTokenAddress: "0x4200000000000000000000000000000000000006",
146
148
  swapRoutes: [
147
149
  // WETH
@@ -152,8 +154,44 @@ const SNOWBRIDGE_ENV: { [env: string]: Environment } = {
152
154
  },
153
155
  // USDC
154
156
  {
155
- inputToken: "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
156
- outputToken: "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
157
+ inputToken: "0x833589fcd6edb6e08f4c7c32d4f71b54bda02913",
158
+ outputToken: "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48",
159
+ swapFee: 500,
160
+ },
161
+ ],
162
+ },
163
+ "42161": {
164
+ adapterAddress: "0x836895Ad176235Dfe9C59b3df56C7579d90ea338".toLowerCase(),
165
+ feeTokenAddress: "0x82aF49447D8a07e3bd95BD0d56f35241523fBab1".toLowerCase(),
166
+ swapRoutes: [
167
+ // WETH
168
+ {
169
+ inputToken: "0x82aF49447D8a07e3bd95BD0d56f35241523fBab1".toLowerCase(),
170
+ outputToken: "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2",
171
+ swapFee: 0,
172
+ },
173
+ // USDC
174
+ {
175
+ inputToken: "0xaf88d065e77c8cC2239327C5EDb3A432268e5831".toLowerCase(),
176
+ outputToken: "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48",
177
+ swapFee: 500,
178
+ },
179
+ ],
180
+ },
181
+ "10": {
182
+ adapterAddress: "0x836895Ad176235Dfe9C59b3df56C7579d90ea338".toLowerCase(),
183
+ feeTokenAddress: "0x4200000000000000000000000000000000000006".toLowerCase(),
184
+ swapRoutes: [
185
+ // WETH
186
+ {
187
+ inputToken: "0x4200000000000000000000000000000000000006".toLowerCase(),
188
+ outputToken: "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2",
189
+ swapFee: 0,
190
+ },
191
+ // USDC
192
+ {
193
+ inputToken: "0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85".toLowerCase(),
194
+ outputToken: "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48",
157
195
  swapFee: 500,
158
196
  },
159
197
  ],
@@ -168,14 +206,15 @@ const SNOWBRIDGE_ENV: { [env: string]: Environment } = {
168
206
  ethereumChains: {
169
207
  "11155111": "https://ethereum-sepolia-rpc.publicnode.com",
170
208
  "84532": "https://base-sepolia-rpc.publicnode.com",
209
+ "421614": "https://arbitrum-sepolia-rpc.publicnode.com",
171
210
  },
172
- relaychainUrl: "wss://westend-rpc.n.dwellir.com",
211
+ relaychainUrl: "https://westend-rpc.polkadot.io",
173
212
  parachains: {
174
- "1000": "wss://asset-hub-westend-rpc.n.dwellir.com",
175
- "1002": "wss://bridge-hub-westend-rpc.n.dwellir.com",
213
+ "1000": "https://westend-asset-hub-rpc.polkadot.io",
214
+ "1002": "https://westend-bridge-hub-rpc.polkadot.io",
176
215
  },
177
216
  gatewayContract: "0x9ed8b47bc3417e3bd0507adc06e56e2fa360a4e9",
178
- beefyContract: "0xA04460B1D8bBef33F54edB2C3115e3E4D41237A6",
217
+ beefyContract: "0xEBD1CFcF82BaA170b86BDe532f69A6A49c6c790D".toLowerCase(),
179
218
  assetHubParaId: 1000,
180
219
  bridgeHubParaId: 1002,
181
220
  v2_parachains: [1000],
@@ -183,14 +222,14 @@ const SNOWBRIDGE_ENV: { [env: string]: Environment } = {
183
222
  "https://snowbridge.squids.live/snowbridge-subsquid-westend@v1/api/graphql",
184
223
  l2Bridge: {
185
224
  acrossAPIUrl: "https://testnet.across.to/api",
186
- l1AdapterAddress: "0xA5B8589bD534701be49916c4d2e634aB1c765Cbf",
187
- l1HandlerAddress: "0x924a9f036260DdD5808007E1AA95f08eD08aA569",
188
- l1FeeTokenAddress: "0xfFf9976782d46CC05630D1f6eBAb18b2324d6B14",
189
- l1SwapRouterAddress: "0x3bFA4769FB09eefC5a80d6E87c3B9C650f7Ae48E",
190
- l1SwapQuoterAddress: "0xEd1f6473345F45b75F8179591dd5bA1888cf2FB3",
225
+ l1AdapterAddress: "0xCDa9bFf39cdF39E95F4B699422E422195091126d".toLowerCase(),
226
+ l1HandlerAddress: "0x924a9f036260ddd5808007e1aa95f08ed08aa569",
227
+ l1FeeTokenAddress: "0xfff9976782d46cc05630d1f6ebab18b2324d6b14",
228
+ l1SwapRouterAddress: "0x3bfa4769fb09eefc5a80d6e87c3b9c650f7ae48e",
229
+ l1SwapQuoterAddress: "0xed1f6473345f45b75f8179591dd5ba1888cf2fb3",
191
230
  l2Chains: {
192
231
  "84532": {
193
- adapterAddress: "0xf06939613A3838Af11104c898758220dB9093679",
232
+ adapterAddress: "0xf06939613a3838af11104c898758220db9093679",
194
233
  feeTokenAddress: "0x4200000000000000000000000000000000000006",
195
234
  swapRoutes: [
196
235
  // WETH
@@ -207,6 +246,24 @@ const SNOWBRIDGE_ENV: { [env: string]: Environment } = {
207
246
  },
208
247
  ],
209
248
  },
249
+ "421614": {
250
+ adapterAddress: "0xcB3d8043bDbfB0D9b30de279A09132073d1dE561".toLowerCase(),
251
+ feeTokenAddress: "0x980B62Da83eFf3D4576C647993b0c1D7faf17c73".toLowerCase(),
252
+ swapRoutes: [
253
+ // WETH
254
+ {
255
+ inputToken: "0x980B62Da83eFf3D4576C647993b0c1D7faf17c73".toLowerCase(),
256
+ outputToken: "0xfff9976782d46cc05630d1f6ebab18b2324d6b14".toLowerCase(),
257
+ swapFee: 0,
258
+ },
259
+ // USDC
260
+ {
261
+ inputToken: "0x75faf114eafb1BDbe2F0316DF893fd58CE46AA4d".toLowerCase(),
262
+ outputToken: "0x1c7d4b196cb0c7b01d743fbc6116a902379c7238".toLowerCase(),
263
+ swapFee: 500,
264
+ },
265
+ ],
266
+ },
210
267
  },
211
268
  },
212
269
  },
@@ -232,7 +289,9 @@ export function defaultPathFilter(envName: string): (_: Path) => boolean {
232
289
  // Disallow MUSE to any location but 3369
233
290
  if (
234
291
  path.asset === "0xb34a6924a02100ba6ef12af1c798285e8f7a16ee" &&
235
- ((path.destination.id !== 3369 && path.source.kind === "ethereum") ||
292
+ ((path.destination.kind === "polkadot" &&
293
+ path.destination.id !== 3369 &&
294
+ path.source.kind === "ethereum") ||
236
295
  (path.source.id !== 3369 && path.source.kind === "polkadot"))
237
296
  ) {
238
297
  return false
@@ -248,7 +307,9 @@ export function defaultPathFilter(envName: string): (_: Path) => boolean {
248
307
  // Disallow MYTH to any location but 3369
249
308
  if (
250
309
  path.asset === "0xba41ddf06b7ffd89d1267b5a93bfef2424eb2003" &&
251
- ((path.destination.id !== 3369 && path.source.kind === "ethereum") ||
310
+ ((path.destination.kind === "polkadot" &&
311
+ path.destination.id !== 3369 &&
312
+ path.source.kind === "ethereum") ||
252
313
  (path.source.id !== 3369 && path.source.kind === "polkadot"))
253
314
  ) {
254
315
  return false
@@ -257,7 +318,8 @@ export function defaultPathFilter(envName: string): (_: Path) => boolean {
257
318
  // Allow TRAC to go to Hydration (2034) and Neuroweb (2043) only
258
319
  if (
259
320
  path.asset === "0xaa7a9ca87d3694b5755f213b5d04094b8d0f0a6f" &&
260
- ((path.destination.id !== 2034 &&
321
+ ((path.destination.kind === "polkadot" &&
322
+ path.destination.id !== 2034 &&
261
323
  path.destination.id !== 2043 &&
262
324
  path.source.kind === "ethereum") ||
263
325
  (path.source.id !== 2034 &&
@@ -272,6 +334,7 @@ export function defaultPathFilter(envName: string): (_: Path) => boolean {
272
334
  (path.asset === "0x9d39a5de30e57443bff2a8307a4256c8797a3497" || // Staked USDe
273
335
  path.asset === "0xa3931d71877c0e7a3148cb7eb4463524fec27fbd" || // Savings USD
274
336
  path.asset === "0x6b175474e89094c44da98b954eedeac495271d0f") && // DAI
337
+ path.destination.kind === "polkadot" &&
275
338
  path.destination.id === 2034 // Hydration
276
339
  ) {
277
340
  return false
@@ -297,6 +360,7 @@ export function defaultPathFilter(envName: string): (_: Path) => boolean {
297
360
 
298
361
  function buildTransferLocations(
299
362
  registry: AssetRegistry,
363
+ environment: Environment,
300
364
  filter?: (path: Path) => boolean,
301
365
  ): TransferRoute[] {
302
366
  const ethChain = registry.ethereumChains[`ethereum_${registry.ethChainId}`]
@@ -386,6 +450,73 @@ function buildTransferLocations(
386
450
  }
387
451
  }
388
452
 
453
+ // L2 paths
454
+ if (environment.l2Bridge) {
455
+ // Do asset hub only, in future we can loop through all v2 enabled parachains.
456
+ for (const l2ChainKey of Object.keys(environment.l2Bridge.l2Chains)) {
457
+ const l2ChainId = Number(l2ChainKey)
458
+ const l2Chain = environment.l2Bridge.l2Chains[l2ChainId]
459
+ const ethChain = registry.ethereumChains[`ethereum_l2_${l2ChainId}`]
460
+ if (!ethChain || !l2Chain) {
461
+ console.warn(`Could not find ethereum l2 chain ${l2ChainId}. Skipping...`)
462
+ continue
463
+ }
464
+ const assetHubAssets = Object.keys(assetHub.assets)
465
+ const destinationAssets = Object.values(ethChain.assets)
466
+ .map((a) => a.swapTokenAddress?.toLowerCase())
467
+ .filter((a) => a !== undefined)
468
+
469
+ // The asset exists on ethereum, parachain and asset hub
470
+ const commonAssets = new Set(
471
+ ethAssets.filter(
472
+ (sa) =>
473
+ assetHubAssets.find((da) => da === sa) &&
474
+ destinationAssets.find((da) => da === sa),
475
+ ),
476
+ )
477
+ for (const asset of commonAssets) {
478
+ const p1: Path = {
479
+ source: { kind: assetHub.kind, id: assetHub.id },
480
+ destination: { kind: ethChain.kind, id: ethChain.id },
481
+ asset,
482
+ }
483
+ if (pathFilter(p1)) {
484
+ locations.push(p1)
485
+ }
486
+ const p2: Path = {
487
+ source: p1.destination, // L2 Chain
488
+ destination: p1.source, // Asset Hub
489
+ asset,
490
+ }
491
+ if (pathFilter(p2)) {
492
+ locations.push(p2)
493
+ }
494
+ }
495
+ }
496
+
497
+ const results: TransferRoute[] = []
498
+ for (const location of locations) {
499
+ let source = results.find(
500
+ (s) =>
501
+ s.from.kind === location.source.kind &&
502
+ s.from.id === location.source.id &&
503
+ s.to.kind === location.destination.kind &&
504
+ s.to.id === location.destination.id,
505
+ )
506
+
507
+ if (!source) {
508
+ source = {
509
+ from: location.source,
510
+ to: location.destination,
511
+ assets: [],
512
+ }
513
+ results.push(source)
514
+ }
515
+ source.assets = source.assets.concat(location.asset)
516
+ }
517
+ }
518
+
519
+ // Combine all paths into routes
389
520
  const results: TransferRoute[] = []
390
521
  for (const location of locations) {
391
522
  let source = results.find(
@@ -747,6 +878,7 @@ async function indexParachain(
747
878
  info.accountType === "AccountId32"
748
879
  ? "0x0000000000000000000000000000000000000000000000000000000000000000"
749
880
  : "0x0000000000000000000000000000000000000000",
881
+ false,
750
882
  )
751
883
 
752
884
  let estimatedExecutionFeeDOT = 0n
@@ -755,7 +887,7 @@ async function indexParachain(
755
887
  const destinationXcm = xcmBuilder.buildParachainERC20ReceivedXcmOnDestination(
756
888
  parachain.provider.registry,
757
889
  ethChainId,
758
- "0x0000000000000000000000000000000000000000",
890
+ assetsV2.ETHER_TOKEN_ADDRESS,
759
891
  340282366920938463463374607431768211455n,
760
892
  340282366920938463463374607431768211455n,
761
893
  info.accountType === "AccountId32"
@@ -808,7 +940,7 @@ async function indexEthChain(
808
940
  metadataOverrides: ERC20MetadataOverrideMap,
809
941
  l2Chains: { [l2ChainId: number]: L2ForwardMetadata },
810
942
  ): Promise<EthereumChain> {
811
- const id = networkName !== "unknown" ? networkName : undefined
943
+ const name = networkName !== "unknown" ? networkName : undefined
812
944
  if (networkChainId == ethChainId) {
813
945
  // Asset Hub and get meta data
814
946
  const assetHub = parachains[`polkadot_${assetHubParaId}`]
@@ -866,6 +998,7 @@ async function indexEthChain(
866
998
  return {
867
999
  kind: "ethereum",
868
1000
  id: networkChainId,
1001
+ name,
869
1002
  assets,
870
1003
  key: `ethereum_${networkChainId}`,
871
1004
  baseDeliveryGas: 120_000n,
@@ -874,23 +1007,24 @@ async function indexEthChain(
874
1007
  const assets: ERC20MetadataMap = {}
875
1008
  for (const route of l2Chains[networkChainId].swapRoutes) {
876
1009
  let asset = await assetErc20Metadata(provider, route.inputToken)
877
- assets[route.inputToken] = {
1010
+ assets[route.inputToken.toLowerCase()] = {
878
1011
  ...asset,
879
- swapTokenAddress: route.outputToken,
1012
+ swapTokenAddress: route.outputToken.toLowerCase(),
880
1013
  swapFee: route.swapFee,
881
1014
  }
882
1015
  }
883
- assets["0x0000000000000000000000000000000000000000"] = {
884
- token: "0x0000000000000000000000000000000000000000",
1016
+ assets[assetsV2.ETHER_TOKEN_ADDRESS] = {
1017
+ token: assetsV2.ETHER_TOKEN_ADDRESS,
885
1018
  name: "Ether",
886
1019
  symbol: "Ether",
887
1020
  decimals: 18,
888
- swapTokenAddress: "0x0000000000000000000000000000000000000000",
1021
+ swapTokenAddress: assetsV2.ETHER_TOKEN_ADDRESS,
889
1022
  swapFee: 0,
890
1023
  }
891
1024
  return {
892
1025
  kind: "ethereum_l2",
893
1026
  id: networkChainId,
1027
+ name,
894
1028
  assets,
895
1029
  key: `ethereum_l2_${networkChainId}`,
896
1030
  }
@@ -942,6 +1076,7 @@ async function indexEthChain(
942
1076
  kind: "ethereum",
943
1077
  id: networkChainId,
944
1078
  key: `ethereum_${networkChainId}`,
1079
+ name,
945
1080
  evmParachainId: evmParachainChain.id,
946
1081
  assets,
947
1082
  precompile,
@@ -1005,7 +1140,7 @@ async function assetErc20Metadata(
1005
1140
  erc20Metadata.decimals(),
1006
1141
  ])
1007
1142
  return {
1008
- token,
1143
+ token: token.toLowerCase(),
1009
1144
  name: String(name),
1010
1145
  symbol: String(symbol),
1011
1146
  decimals: Number(decimals),
@@ -1049,7 +1184,7 @@ async function getRegisteredPnas(
1049
1184
  }
1050
1185
  const environment = SNOWBRIDGE_ENV[env]
1051
1186
  const registry = await buildRegistry(environment)
1052
- const routes = buildTransferLocations(registry)
1187
+ const routes = buildTransferLocations(registry, environment)
1053
1188
  const bridge: BridgeInfo = { environment, routes, registry }
1054
1189
  const json = generateTsObject(bridge, 4)
1055
1190
  const fileContents = `const registry = ${json} as const\nexport default registry\n`
package/src/index.ts CHANGED
@@ -3,13 +3,14 @@ export * from "./transfers"
3
3
  import polkadot_mainnet from "./polkadot_mainnet_bridge_info.g"
4
4
  import westend_sepolia from "./westend_sepolia_bridge_info.g"
5
5
  import paseo_sepolia from "./paseo_sepolia_bridge_info.g"
6
+ import local_e2e from "./local_e2e_bridge_info.g"
6
7
 
7
8
  export { paseo_sepolia, westend_sepolia, polkadot_mainnet }
8
9
 
9
10
  import { BridgeInfo } from "@snowbridge/base-types"
10
11
 
11
12
  export function bridgeInfoFor(
12
- env: "polkadot_mainnet" | "westend_sepolia" | "paseo_sepolia" | (string & {}),
13
+ env: "polkadot_mainnet" | "westend_sepolia" | "paseo_sepolia" | "local_e2e" | (string & {}),
13
14
  ): Readonly<BridgeInfo> {
14
15
  switch (env) {
15
16
  case "polkadot_mainnet":
@@ -19,6 +20,8 @@ export function bridgeInfoFor(
19
20
  return westend_sepolia satisfies BridgeInfo
20
21
  case "paseo_sepolia":
21
22
  return paseo_sepolia satisfies BridgeInfo
23
+ case "local_e2e":
24
+ return local_e2e satisfies BridgeInfo
22
25
  default:
23
26
  throw Error(`Unknown env '${env}'`)
24
27
  }
@@ -0,0 +1,140 @@
1
+ const registry = {
2
+ environment: {
3
+ name: "local_e2e",
4
+ ethChainId: 11155111,
5
+ beaconApiUrl: "http://127.0.0.1:9596",
6
+ ethereumChains: {
7
+ "11155111": "ws://127.0.0.1:8546",
8
+ },
9
+ relaychainUrl: "ws://127.0.0.1:9944",
10
+ parachains: {
11
+ "1000": "ws://127.0.0.1:12144",
12
+ "1002": "ws://127.0.0.1:11144",
13
+ "2000": "ws://127.0.0.1:13144",
14
+ },
15
+ gatewayContract: "0xb1185ede04202fe62d38f5db72f71e38ff3e8305",
16
+ beefyContract: "0x83428c7db9815f482a39a1715684dcf755021997",
17
+ assetHubParaId: 1000,
18
+ bridgeHubParaId: 1002,
19
+ v2_parachains: [1000],
20
+ indexerGraphQlUrl: "http://127.0.0.1/does/not/exist",
21
+ },
22
+ routes: [],
23
+ registry: {
24
+ timestamp: "2026-03-03T03:46:58.680Z",
25
+ environment: "local_e2e",
26
+ ethChainId: 11155111,
27
+ gatewayAddress: "0xb1185ede04202fe62d38f5db72f71e38ff3e8305",
28
+ assetHubParaId: 1000,
29
+ bridgeHubParaId: 1002,
30
+ relaychain: {
31
+ tokenSymbols: "WND",
32
+ tokenDecimals: 12,
33
+ ss58Format: 42,
34
+ isEthereum: false,
35
+ accountType: "AccountId32",
36
+ name: "Westend Local Testnet",
37
+ specName: "westend",
38
+ specVersion: 1021002,
39
+ },
40
+ bridgeHub: {
41
+ tokenSymbols: "WND",
42
+ tokenDecimals: 12,
43
+ ss58Format: 42,
44
+ isEthereum: false,
45
+ accountType: "AccountId32",
46
+ name: "Westend BridgeHub Local",
47
+ specName: "bridge-hub-westend",
48
+ specVersion: 1021002,
49
+ },
50
+ ethereumChains: {
51
+ ethereum_11155111: {
52
+ kind: "ethereum",
53
+ id: 11155111,
54
+ name: "sepolia",
55
+ assets: {
56
+ "0x0000000000000000000000000000000000000000": {
57
+ token: "0x0000000000000000000000000000000000000000",
58
+ name: "Ether",
59
+ symbol: "ETH",
60
+ decimals: 18,
61
+ },
62
+ },
63
+ key: "ethereum_11155111",
64
+ baseDeliveryGas: 120000n,
65
+ },
66
+ },
67
+ parachains: {
68
+ polkadot_1000: {
69
+ id: 1000,
70
+ kind: "polkadot",
71
+ key: "polkadot_1000",
72
+ features: {
73
+ hasPalletXcm: true,
74
+ hasDryRunApi: true,
75
+ hasTxPaymentApi: true,
76
+ hasDryRunRpc: true,
77
+ hasDotBalance: true,
78
+ hasEthBalance: false,
79
+ hasXcmPaymentApi: true,
80
+ supportsAliasOrigin: true,
81
+ xcmVersion: "v5",
82
+ supportsV2: true,
83
+ },
84
+ info: {
85
+ tokenSymbols: "WND",
86
+ tokenDecimals: 12,
87
+ ss58Format: 42,
88
+ isEthereum: false,
89
+ accountType: "AccountId32",
90
+ name: "Westend Asset Hub Local",
91
+ specName: "westmint",
92
+ specVersion: 1021004,
93
+ },
94
+ assets: {
95
+ "0x0000000000000000000000000000000000000000": {
96
+ token: "0x0000000000000000000000000000000000000000",
97
+ name: "Ether",
98
+ minimumBalance: 15000000000000n,
99
+ symbol: "ETH",
100
+ decimals: 18,
101
+ isSufficient: true,
102
+ },
103
+ },
104
+ estimatedExecutionFeeDOT: 0n,
105
+ estimatedDeliveryFeeDOT: 0n,
106
+ },
107
+ polkadot_2000: {
108
+ id: 2000,
109
+ kind: "polkadot",
110
+ key: "polkadot_2000",
111
+ features: {
112
+ hasPalletXcm: true,
113
+ hasDryRunApi: true,
114
+ hasTxPaymentApi: true,
115
+ hasDryRunRpc: true,
116
+ hasDotBalance: true,
117
+ hasEthBalance: false,
118
+ hasXcmPaymentApi: true,
119
+ supportsAliasOrigin: true,
120
+ xcmVersion: "v5",
121
+ supportsV2: false,
122
+ },
123
+ info: {
124
+ tokenSymbols: "undefined",
125
+ tokenDecimals: NaN,
126
+ ss58Format: 42,
127
+ isEthereum: false,
128
+ accountType: "AccountId32",
129
+ name: "Penpal Parachain",
130
+ specName: "penpal-parachain",
131
+ specVersion: 1,
132
+ },
133
+ assets: {},
134
+ estimatedExecutionFeeDOT: 3276800000n,
135
+ estimatedDeliveryFeeDOT: 31450000000n,
136
+ },
137
+ },
138
+ },
139
+ } as const
140
+ export default registry
@@ -13,8 +13,8 @@ const registry = {
13
13
  "2043": "wss://parachain-testnet-rpc.origin-trail.network",
14
14
  "3369": "wss://paseo-muse-rpc.polkadot.io",
15
15
  },
16
- gatewayContract: "0x1607C1368bc943130258318c91bBd8cFf3D063E6",
17
- beefyContract: "0x2c780945beb1241fE9c645800110cb9C4bBbb639",
16
+ gatewayContract: "0x1607c1368bc943130258318c91bbd8cff3d063e6",
17
+ beefyContract: "0x2c780945beb1241fe9c645800110cb9c4bbbb639",
18
18
  assetHubParaId: 1000,
19
19
  bridgeHubParaId: 1002,
20
20
  v2_parachains: [1000],
@@ -108,10 +108,10 @@ const registry = {
108
108
  },
109
109
  ],
110
110
  registry: {
111
- timestamp: "2026-01-28T21:31:42.998Z",
111
+ timestamp: "2026-02-16T10:23:33.158Z",
112
112
  environment: "paseo_sepolia",
113
113
  ethChainId: 11155111,
114
- gatewayAddress: "0x1607C1368bc943130258318c91bBd8cFf3D063E6",
114
+ gatewayAddress: "0x1607c1368bc943130258318c91bbd8cff3d063e6",
115
115
  assetHubParaId: 1000,
116
116
  bridgeHubParaId: 1002,
117
117
  relaychain: {
@@ -122,7 +122,7 @@ const registry = {
122
122
  accountType: "AccountId32",
123
123
  name: "Paseo Testnet",
124
124
  specName: "paseo",
125
- specVersion: 2000005,
125
+ specVersion: 2000006,
126
126
  },
127
127
  bridgeHub: {
128
128
  tokenSymbols: "PAS",
@@ -132,12 +132,13 @@ const registry = {
132
132
  accountType: "AccountId32",
133
133
  name: "Paseo Bridge Hub",
134
134
  specName: "bridge-hub-paseo",
135
- specVersion: 2000005,
135
+ specVersion: 2000006,
136
136
  },
137
137
  ethereumChains: {
138
138
  ethereum_11155111: {
139
139
  kind: "ethereum",
140
140
  id: 11155111,
141
+ name: "sepolia",
141
142
  assets: {
142
143
  "0x0000000000000000000000000000000000000000": {
143
144
  token: "0x0000000000000000000000000000000000000000",
@@ -210,7 +211,7 @@ const registry = {
210
211
  accountType: "AccountId32",
211
212
  name: "Paseo Asset Hub",
212
213
  specName: "asset-hub-paseo",
213
- specVersion: 2000005,
214
+ specVersion: 2000006,
214
215
  },
215
216
  assets: {
216
217
  "0x0000000000000000000000000000000000000000": {