@layerzerolabs/chain-utils 0.0.66 → 0.0.73

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,42 +6,42 @@
6
6
  CLI Using tsconfig: tsconfig.json
7
7
  CLI tsup v8.4.0
8
8
  CLI Using tsup config: /home/runner/work/monorepo-internal/monorepo-internal/packages/chain-abstractions/chain-utils/tsup.config.ts
9
- CLI Target: es2022
9
+ CLI Target: ES2023
10
10
  CLI Cleaning output folder
11
11
  CJS Build start
12
12
  ESM Build start
13
13
  Entry module "dist/7BDQVICT.cjs" is using named and default exports together. Consumers of your bundle will have to use `chunk.default` to access the default export, which may not be what you want. Use `output.exports: "named"` to disable this warning.
14
- ESM dist/addressParser.js 249.00 B
15
- ESM dist/index.js 340.00 B
14
+ ESM dist/addressParser.js 294.00 B
15
+ ESM dist/index.js 385.00 B
16
+ ESM dist/L4WCMHVM.js 17.36 KB
16
17
  ESM dist/utils.js 139.00 B
17
- ESM dist/MR2I35UU.js 10.71 KB
18
18
  ESM dist/FJIAQ3QL.js 419.00 B
19
- ESM dist/YXE7PREU.js 2.36 KB
20
19
  ESM dist/PBOTNOCJ.js 41.68 KB
21
- ESM dist/addressParser.test.js 641.45 KB
20
+ ESM dist/YXE7PREU.js 2.36 KB
21
+ ESM dist/addressParser.test.js 654.24 KB
22
22
  ESM dist/addressParser.js.map 77.00 B
23
- ESM dist/utils.js.map 69.00 B
24
23
  ESM dist/index.js.map 187.00 B
24
+ ESM dist/L4WCMHVM.js.map 41.23 KB
25
+ ESM dist/utils.js.map 69.00 B
25
26
  ESM dist/FJIAQ3QL.js.map 625.00 B
26
- ESM dist/YXE7PREU.js.map 653.00 B
27
- ESM dist/MR2I35UU.js.map 23.40 KB
28
27
  ESM dist/PBOTNOCJ.js.map 99.19 KB
29
- ESM dist/addressParser.test.js.map 1.59 MB
30
- ESM ⚡️ Build success in 1823ms
31
- CJS dist/addressParser.cjs 1008.00 B
32
- CJS dist/index.cjs 1.21 KB
28
+ ESM dist/YXE7PREU.js.map 653.00 B
29
+ ESM dist/addressParser.test.js.map 1.61 MB
30
+ ESM ⚡️ Build success in 5870ms
31
+ CJS dist/addressParser.cjs 1.27 KB
32
+ CJS dist/QOTVRPBZ.cjs 19.27 KB
33
33
  CJS dist/utils.cjs 294.00 B
34
+ CJS dist/index.cjs 1.50 KB
34
35
  CJS dist/NOJYY7DN.cjs 466.00 B
35
- CJS dist/J6P5K7DC.cjs 2.47 KB
36
- CJS dist/K6ILVJZQ.cjs 12.03 KB
37
36
  CJS dist/7BDQVICT.cjs 42.04 KB
38
- CJS dist/addressParser.test.cjs 655.12 KB
39
- CJS dist/index.cjs.map 208.00 B
37
+ CJS dist/J6P5K7DC.cjs 2.47 KB
38
+ CJS dist/addressParser.test.cjs 668.09 KB
40
39
  CJS dist/addressParser.cjs.map 78.00 B
41
- CJS dist/J6P5K7DC.cjs.map 845.00 B
42
- CJS dist/NOJYY7DN.cjs.map 658.00 B
40
+ CJS dist/QOTVRPBZ.cjs.map 41.31 KB
43
41
  CJS dist/utils.cjs.map 70.00 B
44
- CJS dist/K6ILVJZQ.cjs.map 23.49 KB
42
+ CJS dist/index.cjs.map 208.00 B
43
+ CJS dist/NOJYY7DN.cjs.map 658.00 B
45
44
  CJS dist/7BDQVICT.cjs.map 99.22 KB
46
- CJS dist/addressParser.test.cjs.map 1.59 MB
47
- CJS ⚡️ Build success in 1825ms
45
+ CJS dist/J6P5K7DC.cjs.map 845.00 B
46
+ CJS dist/addressParser.test.cjs.map 1.62 MB
47
+ CJS ⚡️ Build success in 5878ms
@@ -13,11 +13,11 @@ Breaking changes might not follow SemVer, please pin Vitest's version when using
13
13
  error: 'The address invalid-ton-address cannot be decoded as TON, hex, or base58'
14
14
  }
15
15
 
16
- ✓ src/addressParser.test.ts (26 tests) 192ms
16
+ ✓ src/addressParser.test.ts (55 tests) 582ms
17
17
 
18
18
   Test Files  1 passed (1)
19
-  Tests  26 passed (26)
19
+  Tests  55 passed (55)
20
20
  Type Errors  no errors
21
-  Start at  18:41:59
22
-  Duration  2.13s (transform 493ms, setup 0ms, collect 1.56s, tests 192ms, environment 0ms, prepare 116ms)
21
+  Start at  20:29:06
22
+  Duration  6.84s (transform 1.30s, setup 0ms, collect 4.87s, tests 582ms, environment 0ms, prepare 341ms)
23
23
 
@@ -1,5 +1,6 @@
1
1
  import { init_esm_shims, __name } from './YXE7PREU.js';
2
2
  import { AccAddress } from '@initia/initia.js';
3
+ import { StrKey } from '@stellar/stellar-sdk';
3
4
  import bs58 from 'bs58';
4
5
  import { normalizeHex } from '@layerzerolabs/common-chain-model';
5
6
  import { addressToHex, bigintToAddress, parseTonAddress } from '@layerzerolabs/common-ton';
@@ -14,12 +15,15 @@ var AddressEncoding = /* @__PURE__ */ (function(AddressEncoding2) {
14
15
  AddressEncoding2["BASE58"] = "base58";
15
16
  AddressEncoding2["TON"] = "ton";
16
17
  AddressEncoding2["INITIA"] = "initia";
18
+ AddressEncoding2["STELLAR"] = "stellar";
17
19
  return AddressEncoding2;
18
20
  })({});
19
21
  function addressParser(chainName) {
20
22
  if (chainName === ChainName.TON) return tonAddressParser(chainName);
21
23
  if (chainName === ChainName.SOLANA) return base58AddressParser(chainName);
22
24
  if (chainName === ChainName.INITIA) return initiaAddressParser(chainName);
25
+ if (chainName === ChainName.STELLAR) return stellarAddressParser(chainName);
26
+ if (chainName === ChainName.STARKNET) return starknetAddressParser(chainName);
23
27
  return hexAddressParser(chainName);
24
28
  }
25
29
  __name(addressParser, "addressParser");
@@ -27,8 +31,9 @@ __name(addressParser, "addressParser");
27
31
  addressParser2.normalizedToBytes32Hex = (address) => {
28
32
  return hexZeroPad(address, 32);
29
33
  };
30
- addressParser2.normalizedToUnpaddedString = (address) => {
31
- return address.toString();
34
+ addressParser2.normalizedToAlignedString = (address) => {
35
+ const hex = address.toString();
36
+ return hex.length % 2 === 0 ? hex : `0x0${hex.slice(2)}`;
32
37
  };
33
38
  addressParser2.normalizedToBytes32 = (address) => {
34
39
  return hexToBytes(addressParser2.normalizedToBytes32Hex(address));
@@ -40,18 +45,21 @@ __name(addressParser, "addressParser");
40
45
  return addressParser2(nativeAddress.chainName).parseNative(nativeAddress.nativeAddress);
41
46
  };
42
47
  })(addressParser || (addressParser = {}));
43
- var validateNative = /* @__PURE__ */ __name((nativeAddress, expectedChainName) => {
48
+ function assertNative(nativeAddress, expectedChainName) {
44
49
  if (!addressParser(expectedChainName).validateNative(nativeAddress)) {
45
- throw new Error("Cannot convert: " + nativeAddress + " - The native address does not match the expected format for the chain: " + expectedChainName);
50
+ throw new Error('Cannot convert: "' + nativeAddress + '" - The native address does not match the expected format for the chain: ' + expectedChainName);
46
51
  }
47
- return true;
48
- }, "validateNative");
52
+ }
53
+ __name(assertNative, "assertNative");
49
54
  var getAddress = /* @__PURE__ */ __name((nativeAddress) => {
50
55
  return typeof nativeAddress === "object" ? nativeAddress.nativeAddress : nativeAddress;
51
56
  }, "getAddress");
52
57
  var tonAddressParser = /* @__PURE__ */ __name((chainName) => {
53
58
  return {
54
59
  validateNative: /* @__PURE__ */ __name((nativeAddress) => {
60
+ if (nativeAddress === void 0) {
61
+ return false;
62
+ }
55
63
  try {
56
64
  parseTonAddress(nativeAddress);
57
65
  return true;
@@ -60,6 +68,7 @@ var tonAddressParser = /* @__PURE__ */ __name((chainName) => {
60
68
  }
61
69
  }, "validateNative"),
62
70
  normalizedToNative: /* @__PURE__ */ __name((address) => {
71
+ if (address === void 0) return void 0;
63
72
  const numericalValue = addressParser.normalizedToBigInt(address);
64
73
  return {
65
74
  // FIXME this is wrong
@@ -68,31 +77,34 @@ var tonAddressParser = /* @__PURE__ */ __name((chainName) => {
68
77
  };
69
78
  }, "normalizedToNative"),
70
79
  normalizedToNativeString: /* @__PURE__ */ __name((address) => {
80
+ if (address === void 0) return void 0;
71
81
  return addressParser(chainName).normalizedToNative(address).nativeAddress;
72
82
  }, "normalizedToNativeString"),
73
83
  nativeToNormalized: /* @__PURE__ */ __name((nativeAddress) => {
84
+ if (nativeAddress === void 0) return void 0;
74
85
  const address = getAddress(nativeAddress);
75
- validateNative(address, chainName);
86
+ assertNative(address, chainName);
76
87
  return normalizeHex(addressToHex(address));
77
88
  }, "nativeToNormalized"),
78
89
  nativeToBytes32Hex: /* @__PURE__ */ __name((nativeAddress) => {
90
+ if (nativeAddress === void 0) return void 0;
79
91
  return hexZeroPad(addressParser(chainName).nativeToNormalized(nativeAddress), 32);
80
92
  }, "nativeToBytes32Hex"),
81
93
  nativeToBytes: /* @__PURE__ */ __name((nativeAddress) => {
94
+ if (nativeAddress === void 0) return void 0;
82
95
  return hexToBytes(addressParser(chainName).nativeToBytes32Hex(nativeAddress));
83
96
  }, "nativeToBytes"),
84
97
  nativeToBytes32: /* @__PURE__ */ __name((nativeAddress) => {
98
+ if (nativeAddress === void 0) return void 0;
85
99
  return hexToBytes(addressParser(chainName).nativeToBytes32Hex(nativeAddress));
86
100
  }, "nativeToBytes32"),
87
101
  parseNative: /* @__PURE__ */ __name((nativeAddress) => {
88
- if (!validateNative(nativeAddress, chainName)) {
89
- throw new Error("Invalid native address: " + nativeAddress);
90
- }
102
+ assertNative(nativeAddress, chainName);
91
103
  return addressParser(chainName).nativeToNormalized(nativeAddress);
92
104
  }, "parseNative"),
93
- parseNativeToHex: /* @__PURE__ */ __name((nativeAddress) => {
105
+ parseNativeToUnpaddedHex: /* @__PURE__ */ __name((nativeAddress) => {
94
106
  return addressParser(chainName).parseNative(nativeAddress);
95
- }, "parseNativeToHex"),
107
+ }, "parseNativeToUnpaddedHex"),
96
108
  tonToNormalized: /* @__PURE__ */ __name((tonAddress) => {
97
109
  return addressParser(chainName).parseNative(addressToHex(tonAddress));
98
110
  }, "tonToNormalized"),
@@ -102,6 +114,9 @@ var tonAddressParser = /* @__PURE__ */ __name((chainName) => {
102
114
  var initiaAddressParser = /* @__PURE__ */ __name((chainName) => {
103
115
  return {
104
116
  validateNative: /* @__PURE__ */ __name((nativeAddress) => {
117
+ if (nativeAddress === void 0) {
118
+ return false;
119
+ }
105
120
  try {
106
121
  return isHexString(nativeAddress) || /^(init)1(['qpzry9x8gf2tvdw0s3jn54khce6mua7l]{38,66})$/.test(nativeAddress);
107
122
  } catch {
@@ -109,93 +124,106 @@ var initiaAddressParser = /* @__PURE__ */ __name((chainName) => {
109
124
  }
110
125
  }, "validateNative"),
111
126
  normalizedToNative: /* @__PURE__ */ __name((address) => {
127
+ if (address === void 0) {
128
+ return void 0;
129
+ }
112
130
  return {
113
131
  nativeAddress: AccAddress.fromHex(address),
114
132
  chainName
115
133
  };
116
134
  }, "normalizedToNative"),
117
135
  normalizedToNativeString: /* @__PURE__ */ __name((address) => {
136
+ if (address === void 0) return void 0;
118
137
  return addressParser(chainName).normalizedToNative(address).nativeAddress;
119
138
  }, "normalizedToNativeString"),
120
139
  nativeToNormalized: /* @__PURE__ */ __name((nativeAddress) => {
140
+ if (nativeAddress === void 0) return void 0;
121
141
  const address = getAddress(nativeAddress);
122
- validateNative(address, chainName);
142
+ assertNative(address, chainName);
123
143
  if (isHexString(address)) {
124
144
  return normalizeHex(address);
125
145
  }
126
146
  return normalizeHex(AccAddress.toHex(nativeAddress.toString()));
127
147
  }, "nativeToNormalized"),
128
148
  nativeToBytes32Hex: /* @__PURE__ */ __name((nativeAddress) => {
149
+ if (nativeAddress === void 0) return void 0;
129
150
  return hexZeroPad(addressParser(chainName).nativeToNormalized(nativeAddress), 32);
130
151
  }, "nativeToBytes32Hex"),
131
152
  nativeToBytes: /* @__PURE__ */ __name((nativeAddress) => {
153
+ if (nativeAddress === void 0) return void 0;
132
154
  return hexToBytes(addressParser(chainName).nativeToBytes32Hex(nativeAddress));
133
155
  }, "nativeToBytes"),
134
156
  nativeToBytes32: /* @__PURE__ */ __name((nativeAddress) => {
157
+ if (nativeAddress === void 0) return void 0;
135
158
  return hexToBytes(addressParser(chainName).nativeToBytes32Hex(nativeAddress));
136
159
  }, "nativeToBytes32"),
137
160
  parseNative: /* @__PURE__ */ __name((nativeAddress) => {
138
- if (!validateNative(nativeAddress, chainName)) {
139
- throw new Error("Invalid native address: " + nativeAddress);
140
- }
161
+ assertNative(nativeAddress, chainName);
141
162
  return addressParser(chainName).nativeToNormalized(nativeAddress);
142
163
  }, "parseNative"),
143
- parseNativeToHex: /* @__PURE__ */ __name((nativeAddress) => {
164
+ parseNativeToUnpaddedHex: /* @__PURE__ */ __name((nativeAddress) => {
144
165
  return addressParser(chainName).parseNative(nativeAddress);
145
- }, "parseNativeToHex"),
166
+ }, "parseNativeToUnpaddedHex"),
146
167
  encoding: "initia"
147
168
  };
148
169
  }, "initiaAddressParser");
149
170
  var base58AddressParser = /* @__PURE__ */ __name((chainName) => {
150
171
  return {
151
172
  validateNative: /* @__PURE__ */ __name((nativeAddress) => {
173
+ if (nativeAddress === void 0) return false;
152
174
  return isBase58(nativeAddress);
153
175
  }, "validateNative"),
154
176
  normalizedToNative: /* @__PURE__ */ __name((address) => {
177
+ if (address === void 0) return void 0;
155
178
  return {
156
179
  nativeAddress: bs58.encode(hexToBytes(address)),
157
180
  chainName
158
181
  };
159
182
  }, "normalizedToNative"),
160
183
  normalizedToNativeString: /* @__PURE__ */ __name((address) => {
184
+ if (address === void 0) return void 0;
161
185
  return addressParser(chainName).normalizedToNative(address).nativeAddress;
162
186
  }, "normalizedToNativeString"),
163
187
  nativeToNormalized: /* @__PURE__ */ __name((nativeAddress) => {
188
+ if (nativeAddress === void 0) return void 0;
164
189
  const address = getAddress(nativeAddress);
165
- validateNative(address, chainName);
190
+ assertNative(address, chainName);
166
191
  const hex = bytesToHexPrefixed(bs58.decode(address));
167
192
  return normalizeHex(hex);
168
193
  }, "nativeToNormalized"),
169
194
  nativeToBytes32Hex: /* @__PURE__ */ __name((nativeAddress) => {
195
+ if (nativeAddress === void 0) return void 0;
170
196
  return hexZeroPad(addressParser(chainName).nativeToNormalized(nativeAddress), 32);
171
197
  }, "nativeToBytes32Hex"),
172
198
  nativeToBytes: /* @__PURE__ */ __name((nativeAddress) => {
199
+ if (nativeAddress === void 0) return void 0;
173
200
  const address = getAddress(nativeAddress);
174
- validateNative(address, chainName);
201
+ assertNative(address, chainName);
175
202
  return bs58.decode(address);
176
203
  }, "nativeToBytes"),
177
204
  nativeToBytes32: /* @__PURE__ */ __name((nativeAddress) => {
205
+ if (nativeAddress === void 0) return void 0;
178
206
  return hexToBytes(addressParser(chainName).nativeToBytes32Hex(nativeAddress));
179
207
  }, "nativeToBytes32"),
180
208
  parseNative: /* @__PURE__ */ __name((nativeAddress) => {
181
- if (!validateNative(nativeAddress, chainName)) {
182
- throw new Error("Invalid native address: " + nativeAddress);
183
- }
209
+ assertNative(nativeAddress, chainName);
184
210
  return addressParser(chainName).nativeToNormalized(nativeAddress);
185
211
  }, "parseNative"),
186
- parseNativeToHex: /* @__PURE__ */ __name((nativeAddress) => {
212
+ parseNativeToUnpaddedHex: /* @__PURE__ */ __name((nativeAddress) => {
187
213
  return addressParser(chainName).parseNative(nativeAddress);
188
- }, "parseNativeToHex"),
214
+ }, "parseNativeToUnpaddedHex"),
189
215
  encoding: "base58"
190
216
  };
191
217
  }, "base58AddressParser");
192
218
  var hexAddressParser = /* @__PURE__ */ __name((chainName) => {
193
- const nativeByteLength = StaticChainConfigs.getAddressSizeInBytes(chainName);
194
219
  return {
195
220
  validateNative: /* @__PURE__ */ __name((nativeAddress) => {
221
+ if (nativeAddress === void 0) return false;
196
222
  return isHexString(nativeAddress);
197
223
  }, "validateNative"),
198
224
  normalizedToNative: /* @__PURE__ */ __name((address) => {
225
+ if (address === void 0) return void 0;
226
+ const nativeByteLength = StaticChainConfigs.getAddressSizeInBytes(chainName);
199
227
  return {
200
228
  // we could have EIP-55 here, but omitted for now
201
229
  nativeAddress: hexZeroPad(address, nativeByteLength),
@@ -203,42 +231,156 @@ var hexAddressParser = /* @__PURE__ */ __name((chainName) => {
203
231
  };
204
232
  }, "normalizedToNative"),
205
233
  normalizedToNativeString: /* @__PURE__ */ __name((address) => {
234
+ if (address === void 0) return void 0;
235
+ const nativeByteLength = StaticChainConfigs.getAddressSizeInBytes(chainName);
206
236
  return hexZeroPad(address, nativeByteLength);
207
237
  }, "normalizedToNativeString"),
208
238
  nativeToNormalized: /* @__PURE__ */ __name((nativeAddress) => {
239
+ if (nativeAddress === void 0) return void 0;
209
240
  const address = getAddress(nativeAddress);
210
- validateNative(address, chainName);
241
+ assertNative(address, chainName);
211
242
  return normalizeHex(address);
212
243
  }, "nativeToNormalized"),
213
244
  nativeToBytes: /* @__PURE__ */ __name((nativeAddress) => {
245
+ if (nativeAddress === void 0) return void 0;
214
246
  const address = getAddress(nativeAddress);
215
- validateNative(address, chainName);
247
+ assertNative(address, chainName);
216
248
  return hexToBytes(address);
217
249
  }, "nativeToBytes"),
218
250
  nativeToBytes32Hex: /* @__PURE__ */ __name((nativeAddress) => {
251
+ if (nativeAddress === void 0) return void 0;
219
252
  const address = getAddress(nativeAddress);
220
- validateNative(address, chainName);
253
+ assertNative(address, chainName);
221
254
  return hexZeroPad(address, 32);
222
255
  }, "nativeToBytes32Hex"),
223
256
  nativeToBytes32: /* @__PURE__ */ __name((nativeAddress) => {
257
+ if (nativeAddress === void 0) return void 0;
224
258
  return hexToBytes(addressParser(chainName).nativeToBytes32Hex(nativeAddress));
225
259
  }, "nativeToBytes32"),
226
260
  parseNative: /* @__PURE__ */ __name((nativeAddress) => {
227
- if (chainName === ChainName.TRON) {
261
+ if (chainName === ChainName.TRON && nativeAddress) {
228
262
  nativeAddress = nativeAddress.startsWith("41") ? `0x${nativeAddress.slice(2)}` : nativeAddress;
229
263
  }
230
- if (!validateNative(nativeAddress, chainName)) {
231
- throw new Error("Invalid native address: " + nativeAddress);
232
- }
264
+ assertNative(nativeAddress, chainName);
233
265
  return addressParser(chainName).nativeToNormalized(nativeAddress);
234
266
  }, "parseNative"),
235
- parseNativeToHex: /* @__PURE__ */ __name((nativeAddress) => {
267
+ parseNativeToUnpaddedHex: /* @__PURE__ */ __name((nativeAddress) => {
236
268
  return addressParser(chainName).parseNative(nativeAddress);
237
- }, "parseNativeToHex"),
269
+ }, "parseNativeToUnpaddedHex"),
238
270
  encoding: "hex"
239
271
  };
240
272
  }, "hexAddressParser");
273
+ var stellarAddressParser = /* @__PURE__ */ __name((chainName) => {
274
+ const isValidStellarAddress = /* @__PURE__ */ __name((address) => {
275
+ if (!address) return false;
276
+ return StrKey.isValidEd25519PublicKey(address) || StrKey.isValidContract(address) || StrKey.isValidMed25519PublicKey(address) || StrKey.isValidLiquidityPool(address) || StrKey.isValidClaimableBalance(address) || StrKey.isValidSignedPayload(address);
277
+ }, "isValidStellarAddress");
278
+ const stellarTextEncoder = new TextEncoder();
279
+ const stellarAsciiToNormalized = /* @__PURE__ */ __name((address) => {
280
+ const bytes = stellarTextEncoder.encode(address);
281
+ return normalizeHex(bytesToHexPrefixed(bytes));
282
+ }, "stellarAsciiToNormalized");
283
+ const stellarTextDecoder = new TextDecoder();
284
+ const normalizedToStellarAscii = /* @__PURE__ */ __name((normalizedHex) => {
285
+ const bytes = hexToBytes(normalizedHex);
286
+ return stellarTextDecoder.decode(bytes);
287
+ }, "normalizedToStellarAscii");
288
+ return {
289
+ validateNative: /* @__PURE__ */ __name((nativeAddress) => {
290
+ if (nativeAddress === void 0) return false;
291
+ return isValidStellarAddress(nativeAddress);
292
+ }, "validateNative"),
293
+ normalizedToNative: /* @__PURE__ */ __name((address) => {
294
+ if (address === void 0) return void 0;
295
+ const stellarAddress = normalizedToStellarAscii(address);
296
+ return {
297
+ nativeAddress: stellarAddress,
298
+ chainName
299
+ };
300
+ }, "normalizedToNative"),
301
+ normalizedToNativeString: /* @__PURE__ */ __name((address) => {
302
+ if (address === void 0) return void 0;
303
+ return normalizedToStellarAscii(address);
304
+ }, "normalizedToNativeString"),
305
+ nativeToNormalized: /* @__PURE__ */ __name((nativeAddress) => {
306
+ if (nativeAddress === void 0) return void 0;
307
+ const address = getAddress(nativeAddress);
308
+ assertNative(address, chainName);
309
+ return stellarAsciiToNormalized(address);
310
+ }, "nativeToNormalized"),
311
+ nativeToBytes32Hex: /* @__PURE__ */ __name((nativeAddress) => {
312
+ if (nativeAddress === void 0) return void 0;
313
+ const address = getAddress(nativeAddress);
314
+ assertNative(address, chainName);
315
+ let rawBytes;
316
+ if (StrKey.isValidEd25519PublicKey(address)) {
317
+ rawBytes = StrKey.decodeEd25519PublicKey(address);
318
+ } else if (StrKey.isValidContract(address)) {
319
+ rawBytes = StrKey.decodeContract(address);
320
+ } else if (StrKey.isValidLiquidityPool(address)) {
321
+ rawBytes = StrKey.decodeLiquidityPool(address);
322
+ } else if (StrKey.isValidClaimableBalance(address)) {
323
+ const fullBytes = StrKey.decodeClaimableBalance(address);
324
+ rawBytes = fullBytes.subarray(1);
325
+ } else if (StrKey.isValidMed25519PublicKey(address)) {
326
+ throw new Error("nativeToBytes32 is not supported for Stellar muxed addresses (M...)");
327
+ } else if (StrKey.isValidSignedPayload(address)) {
328
+ throw new Error("nativeToBytes32 is not supported for Stellar signed payload addresses (P...)");
329
+ } else {
330
+ throw new Error(`Unknown Stellar address type: ${address}`);
331
+ }
332
+ return bytesToHexPrefixed(rawBytes);
333
+ }, "nativeToBytes32Hex"),
334
+ nativeToBytes: /* @__PURE__ */ __name((nativeAddress) => {
335
+ if (nativeAddress === void 0) return void 0;
336
+ const address = getAddress(nativeAddress);
337
+ assertNative(address, chainName);
338
+ return stellarTextEncoder.encode(address);
339
+ }, "nativeToBytes"),
340
+ nativeToBytes32: /* @__PURE__ */ __name((nativeAddress) => {
341
+ if (nativeAddress === void 0) return void 0;
342
+ const hex = addressParser(chainName).nativeToBytes32Hex(nativeAddress);
343
+ return hexToBytes(hex);
344
+ }, "nativeToBytes32"),
345
+ parseNative: /* @__PURE__ */ __name((nativeAddress) => {
346
+ assertNative(nativeAddress, chainName);
347
+ return addressParser(chainName).nativeToNormalized(nativeAddress);
348
+ }, "parseNative"),
349
+ parseNativeToUnpaddedHex: /* @__PURE__ */ __name((nativeAddress) => {
350
+ assertNative(nativeAddress, chainName);
351
+ const normalized = addressParser(chainName).nativeToNormalized(nativeAddress);
352
+ return normalized;
353
+ }, "parseNativeToUnpaddedHex"),
354
+ encoding: "stellar"
355
+ };
356
+ }, "stellarAddressParser");
357
+ var starknetAddressParser = /* @__PURE__ */ __name((chainName) => {
358
+ return {
359
+ ...hexAddressParser(chainName),
360
+ validateNative: /* @__PURE__ */ __name((nativeAddress) => {
361
+ if (nativeAddress === void 0) return false;
362
+ return isHexString(nativeAddress);
363
+ }, "validateNative"),
364
+ parseNative: /* @__PURE__ */ __name((nativeAddress) => {
365
+ if (nativeAddress === void 0) return void 0;
366
+ nativeAddress = `0x${BigInt(nativeAddress).toString(16)}`;
367
+ assertNative(nativeAddress, chainName);
368
+ return addressParser(chainName).nativeToNormalized(nativeAddress);
369
+ }, "parseNative"),
370
+ normalizedToNative: /* @__PURE__ */ __name((address) => {
371
+ if (address === void 0) return void 0;
372
+ return {
373
+ nativeAddress: address,
374
+ chainName
375
+ };
376
+ }, "normalizedToNative"),
377
+ normalizedToNativeString: /* @__PURE__ */ __name((address) => {
378
+ if (address === void 0) return void 0;
379
+ return address;
380
+ }, "normalizedToNativeString")
381
+ };
382
+ }, "starknetAddressParser");
241
383
 
242
- export { AddressEncoding, addressParser, base58AddressParser, hexAddressParser, initiaAddressParser, tonAddressParser };
243
- //# sourceMappingURL=MR2I35UU.js.map
244
- //# sourceMappingURL=MR2I35UU.js.map
384
+ export { AddressEncoding, addressParser, base58AddressParser, hexAddressParser, initiaAddressParser, starknetAddressParser, stellarAddressParser, tonAddressParser };
385
+ //# sourceMappingURL=L4WCMHVM.js.map
386
+ //# sourceMappingURL=L4WCMHVM.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/addressParser.ts"],"names":["AddressEncoding","addressParser","chainName","ChainName","TON","tonAddressParser","SOLANA","base58AddressParser","INITIA","initiaAddressParser","STELLAR","stellarAddressParser","STARKNET","starknetAddressParser","hexAddressParser","normalizedToBytes32Hex","address","hexZeroPad","normalizedToAlignedString","hex","toString","length","slice","normalizedToBytes32","hexToBytes","normalizedToBigInt","BigInt","parseNative","nativeAddress","assertNative","expectedChainName","validateNative","Error","getAddress","undefined","parseTonAddress","normalizedToNative","numericalValue","bigintToAddress","normalizedToNativeString","nativeToNormalized","normalizeHex","addressToHex","nativeToBytes32Hex","nativeToBytes","nativeToBytes32","parseNativeToUnpaddedHex","tonToNormalized","tonAddress","encoding","isHexString","test","AccAddress","fromHex","toHex","isBase58","bs58","encode","bytesToHexPrefixed","decode","nativeByteLength","StaticChainConfigs","getAddressSizeInBytes","TRON","startsWith","isValidStellarAddress","StrKey","isValidEd25519PublicKey","isValidContract","isValidMed25519PublicKey","isValidLiquidityPool","isValidClaimableBalance","isValidSignedPayload","stellarTextEncoder","TextEncoder","stellarAsciiToNormalized","bytes","stellarTextDecoder","TextDecoder","normalizedToStellarAscii","normalizedHex","stellarAddress","rawBytes","decodeEd25519PublicKey","decodeContract","decodeLiquidityPool","fullBytes","decodeClaimableBalance","subarray","normalized"],"mappings":"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","file":"L4WCMHVM.js","sourcesContent":["import { AccAddress } from '@initia/initia.js';\nimport { StrKey } from '@stellar/stellar-sdk';\nimport type { Address } from '@ton/ton';\nimport bs58 from 'bs58';\n\nimport type { HexString, NormalizedHexString } from '@layerzerolabs/common-chain-model';\nimport { normalizeHex } from '@layerzerolabs/common-chain-model';\nimport { addressToHex, bigintToAddress, parseTonAddress } from '@layerzerolabs/common-ton';\nimport {\n bytesToHexPrefixed,\n hexToBytes,\n hexZeroPad,\n isBase58,\n isHexString,\n} from '@layerzerolabs/common-utils';\nimport type {\n Base58String,\n ChainsByEncoding,\n ChainType,\n InferChainNamesForChainType,\n InferChainTypeForChainName,\n InitiaString,\n NativeAddress,\n ResolvedEncodingForChainName,\n StellarString,\n} from '@layerzerolabs/layerzero-definitions';\nimport type { ChainNativeAddress } from '@layerzerolabs/layerzero-definitions';\nimport { ChainName } from '@layerzerolabs/layerzero-definitions';\nimport { StaticChainConfigs } from '@layerzerolabs/static-chain-info';\nimport type { MaybeUndefinedMapped } from '@layerzerolabs/typescript-utils';\n\ntype NativeOrString<T extends ChainName> = ChainNativeAddress<T> | ResolvedEncodingForChainName<T>;\n\nexport enum AddressEncoding {\n HEX = 'hex',\n BASE58 = 'base58',\n TON = 'ton',\n INITIA = 'initia',\n STELLAR = 'stellar',\n}\n\nexport type ExtensionByChainType = {\n ton: {\n tonToNormalized: (tonAddress: Address) => NormalizedHexString;\n };\n};\n\nexport type InferExtensionByChainName<T extends ChainName> =\n InferChainTypeForChainName<T> extends keyof ExtensionByChainType\n ? ExtensionByChainType[InferChainTypeForChainName<T>]\n : {};\n\nexport type AddressParser<T extends ChainName> = {\n normalizedToNative: <Address extends NormalizedHexString | undefined>(\n address: Address,\n ) => MaybeUndefinedMapped<Address, ChainNativeAddress<T>>;\n normalizedToNativeString: <Address extends NormalizedHexString | undefined>(\n address: Address,\n ) => MaybeUndefinedMapped<Address, ResolvedEncodingForChainName<T>>;\n nativeToNormalized: <Address extends NativeOrString<T> | undefined>(\n nativeAddress: Address,\n ) => MaybeUndefinedMapped<Address, NormalizedHexString>;\n nativeToBytes: <Address extends NativeOrString<T> | undefined>(\n nativeAddress: Address,\n ) => MaybeUndefinedMapped<Address, Uint8Array>;\n nativeToBytes32Hex: <Address extends NativeOrString<T> | undefined>(\n nativeAddress: Address,\n ) => MaybeUndefinedMapped<Address, HexString>;\n nativeToBytes32: <Address extends NativeOrString<T> | undefined>(\n nativeAddress: Address,\n ) => MaybeUndefinedMapped<Address, Uint8Array>;\n validateNative: (\n nativeAddress: string | undefined,\n ) => nativeAddress is ResolvedEncodingForChainName<T>;\n /**\n * Parse a native address to a string if it is valid.\n * Throws an error if the native address is invalid.\n * @param nativeAddress - The native address to parse.\n * @returns The parsed native address.\n */\n parseNative: (nativeAddress: string | undefined) => NormalizedHexString;\n parseNativeToUnpaddedHex: (nativeAddress: string | undefined) => HexString;\n encoding: AddressEncoding;\n} & InferExtensionByChainName<T>;\n\nexport function addressParser<T extends ChainName>(chainName: T): AddressParser<T> {\n // FIXME: figure out a way to not have to cast here\n if (chainName === ChainName.TON)\n return tonAddressParser(chainName) as unknown as AddressParser<T>;\n if (chainName === ChainName.SOLANA)\n return base58AddressParser(chainName) as unknown as AddressParser<T>;\n if (chainName === ChainName.INITIA)\n return initiaAddressParser(chainName) as unknown as AddressParser<T>;\n if (chainName === ChainName.STELLAR)\n return stellarAddressParser(chainName) as unknown as AddressParser<T>;\n if (chainName === ChainName.STARKNET)\n return starknetAddressParser(chainName) as unknown as AddressParser<T>;\n return hexAddressParser(chainName) as unknown as AddressParser<T>;\n}\n\nexport namespace addressParser {\n export const normalizedToBytes32Hex = (address: NormalizedHexString) => {\n return hexZeroPad(address as unknown as HexString, 32);\n };\n\n export const normalizedToAlignedString = (address: NormalizedHexString) => {\n const hex = address.toString();\n // Unpadded but aligned to a byte length, so its transformable to a byte array\n return (hex.length % 2 === 0 ? hex : `0x0${hex.slice(2)}`) as HexString;\n };\n\n export const normalizedToBytes32 = (address: NormalizedHexString) => {\n return hexToBytes(normalizedToBytes32Hex(address));\n };\n\n export const normalizedToBigInt = (address: NormalizedHexString) => {\n return BigInt(address as unknown as HexString);\n };\n\n export const parseNative = (nativeAddress: NativeAddress) => {\n return addressParser(nativeAddress.chainName).parseNative(nativeAddress.nativeAddress);\n };\n}\n\nfunction assertNative<T extends ChainName>(\n nativeAddress: string | undefined,\n expectedChainName: T,\n): asserts nativeAddress is ResolvedEncodingForChainName<T> {\n if (!addressParser(expectedChainName).validateNative(nativeAddress)) {\n throw new Error(\n 'Cannot convert: \"' +\n nativeAddress +\n '\" - The native address does not match the expected format for the chain: ' +\n expectedChainName,\n );\n }\n}\n\nconst getAddress = <T extends ChainName>(nativeAddress: NativeOrString<T>) => {\n return typeof nativeAddress === 'object' ? nativeAddress.nativeAddress : nativeAddress;\n};\n\nexport const tonAddressParser: (\n chainName: InferChainNamesForChainType<ChainType.TON>,\n) => AddressParser<InferChainNamesForChainType<ChainType.TON>> = (chainName) => {\n return {\n validateNative: (nativeAddress): nativeAddress is HexString => {\n if (nativeAddress === undefined) {\n return false;\n }\n try {\n parseTonAddress(nativeAddress);\n return true;\n } catch {\n return false;\n }\n },\n normalizedToNative: (address) => {\n if (address === undefined) return undefined as any;\n const numericalValue = addressParser.normalizedToBigInt(address);\n return {\n // FIXME this is wrong\n nativeAddress: bigintToAddress(numericalValue).toString() as HexString,\n chainName,\n };\n },\n normalizedToNativeString: (address) => {\n if (address === undefined) return undefined as any;\n return addressParser(chainName).normalizedToNative(address).nativeAddress;\n },\n nativeToNormalized: (nativeAddress) => {\n if (nativeAddress === undefined) return undefined as any;\n const address = getAddress(nativeAddress);\n assertNative(address, chainName);\n return normalizeHex(addressToHex(address));\n },\n nativeToBytes32Hex: (nativeAddress) => {\n // naturally ton is 32 bytes, pad it anyway\n if (nativeAddress === undefined) return undefined as any;\n return hexZeroPad(\n addressParser(chainName).nativeToNormalized(nativeAddress) as unknown as HexString,\n 32,\n );\n },\n nativeToBytes: (nativeAddress) => {\n if (nativeAddress === undefined) return undefined as any;\n return hexToBytes(addressParser(chainName).nativeToBytes32Hex(nativeAddress));\n },\n nativeToBytes32: (nativeAddress) => {\n if (nativeAddress === undefined) return undefined as any;\n return hexToBytes(addressParser(chainName).nativeToBytes32Hex(nativeAddress));\n },\n parseNative: (nativeAddress) => {\n assertNative(nativeAddress, chainName);\n return addressParser(chainName).nativeToNormalized(nativeAddress);\n },\n parseNativeToUnpaddedHex: (nativeAddress) => {\n return addressParser(chainName).parseNative(nativeAddress) as unknown as HexString;\n },\n tonToNormalized: (tonAddress) => {\n return addressParser(chainName).parseNative(addressToHex(tonAddress));\n },\n encoding: AddressEncoding.TON,\n };\n};\n\nexport const initiaAddressParser: (\n chainName: ChainsByEncoding[InitiaString],\n) => AddressParser<ChainsByEncoding[InitiaString]> = (chainName) => {\n return {\n validateNative: (nativeAddress): nativeAddress is InitiaString => {\n if (nativeAddress === undefined) {\n return false;\n }\n try {\n // Both formats are native for the chain and are used kind of randomly.\n return (\n isHexString(nativeAddress) ||\n /^(init)1(['qpzry9x8gf2tvdw0s3jn54khce6mua7l]{38,66})$/.test(nativeAddress)\n );\n } catch {\n return false;\n }\n },\n normalizedToNative: (address) => {\n if (address === undefined) {\n return undefined as any;\n }\n return {\n nativeAddress: AccAddress.fromHex(address as unknown as HexString) as InitiaString,\n chainName,\n };\n },\n normalizedToNativeString: (address) => {\n if (address === undefined) return undefined as any;\n return addressParser(chainName).normalizedToNative(address).nativeAddress;\n },\n nativeToNormalized: (nativeAddress) => {\n if (nativeAddress === undefined) return undefined as any;\n const address = getAddress(nativeAddress);\n assertNative(address, chainName);\n if (isHexString(address)) {\n return normalizeHex(address);\n }\n return normalizeHex(AccAddress.toHex(nativeAddress.toString()) as HexString);\n },\n nativeToBytes32Hex: (nativeAddress) => {\n if (nativeAddress === undefined) return undefined as any;\n // naturally ton is 32 bytes, pad it anyway\n return hexZeroPad(\n addressParser(chainName).nativeToNormalized(nativeAddress) as unknown as HexString,\n 32,\n );\n },\n nativeToBytes: (nativeAddress) => {\n if (nativeAddress === undefined) return undefined as any;\n return hexToBytes(addressParser(chainName).nativeToBytes32Hex(nativeAddress));\n },\n nativeToBytes32: (nativeAddress) => {\n if (nativeAddress === undefined) return undefined as any;\n return hexToBytes(addressParser(chainName).nativeToBytes32Hex(nativeAddress));\n },\n parseNative: (nativeAddress) => {\n assertNative(nativeAddress, chainName);\n return addressParser(chainName).nativeToNormalized(nativeAddress);\n },\n parseNativeToUnpaddedHex: (nativeAddress) => {\n return addressParser(chainName).parseNative(nativeAddress) as unknown as HexString;\n },\n encoding: AddressEncoding.INITIA,\n };\n};\n\nexport const base58AddressParser = (\n chainName: ChainsByEncoding[Base58String],\n): AddressParser<ChainsByEncoding[Base58String]> => {\n return {\n validateNative: (nativeAddress): nativeAddress is Base58String => {\n if (nativeAddress === undefined) return false;\n return isBase58(nativeAddress);\n },\n normalizedToNative: (address) => {\n if (address === undefined) return undefined as any;\n return {\n nativeAddress: bs58.encode(\n hexToBytes(address as unknown as HexString),\n ) as Base58String,\n chainName,\n };\n },\n normalizedToNativeString: (address) => {\n if (address === undefined) return undefined as any;\n return addressParser(chainName).normalizedToNative(address).nativeAddress;\n },\n nativeToNormalized: (nativeAddress) => {\n if (nativeAddress === undefined) return undefined as any;\n const address = getAddress(nativeAddress);\n assertNative(address, chainName);\n const hex = bytesToHexPrefixed(bs58.decode(address));\n return normalizeHex(hex);\n },\n nativeToBytes32Hex: (nativeAddress) => {\n // naturally solana is 32 bytes, pad it anyway\n if (nativeAddress === undefined) return undefined as any;\n return hexZeroPad(\n addressParser(chainName).nativeToNormalized(nativeAddress) as unknown as HexString,\n 32,\n );\n },\n nativeToBytes: (nativeAddress) => {\n if (nativeAddress === undefined) return undefined as any;\n const address = getAddress(nativeAddress);\n assertNative(address, chainName);\n return bs58.decode(address);\n },\n nativeToBytes32: (nativeAddress) => {\n if (nativeAddress === undefined) return undefined as any;\n return hexToBytes(addressParser(chainName).nativeToBytes32Hex(nativeAddress));\n },\n parseNative: (nativeAddress) => {\n assertNative(nativeAddress, chainName);\n return addressParser(chainName).nativeToNormalized(nativeAddress);\n },\n parseNativeToUnpaddedHex: (nativeAddress) => {\n return addressParser(chainName).parseNative(nativeAddress) as unknown as HexString;\n },\n encoding: AddressEncoding.BASE58,\n };\n};\n\nexport const hexAddressParser = (\n chainName: ChainsByEncoding[HexString],\n): AddressParser<ChainsByEncoding[HexString]> => {\n return {\n validateNative: (nativeAddress): nativeAddress is HexString => {\n if (nativeAddress === undefined) return false;\n return isHexString(nativeAddress);\n },\n normalizedToNative: (address) => {\n if (address === undefined) return undefined as any;\n // we fetch here instead of storing by chain because some chains may not have this defined,\n // so we should only throw on those chains if they try to use these methods that need the native byte length\n const nativeByteLength = StaticChainConfigs.getAddressSizeInBytes(chainName);\n return {\n // we could have EIP-55 here, but omitted for now\n nativeAddress: hexZeroPad(address as unknown as HexString, nativeByteLength),\n chainName,\n };\n },\n normalizedToNativeString: (address) => {\n if (address === undefined) return undefined as any;\n const nativeByteLength = StaticChainConfigs.getAddressSizeInBytes(chainName);\n return hexZeroPad(address as unknown as HexString, nativeByteLength);\n },\n nativeToNormalized: (nativeAddress) => {\n if (nativeAddress === undefined) return undefined as any;\n const address = getAddress(nativeAddress);\n assertNative(address, chainName);\n return normalizeHex(address);\n },\n nativeToBytes: (nativeAddress) => {\n if (nativeAddress === undefined) return undefined as any;\n const address = getAddress(nativeAddress);\n assertNative(address, chainName);\n return hexToBytes(address);\n },\n nativeToBytes32Hex: (nativeAddress) => {\n if (nativeAddress === undefined) return undefined as any;\n const address = getAddress(nativeAddress);\n assertNative(address, chainName);\n return hexZeroPad(address, 32);\n },\n nativeToBytes32: (nativeAddress) => {\n if (nativeAddress === undefined) return undefined as any;\n return hexToBytes(addressParser(chainName).nativeToBytes32Hex(nativeAddress));\n },\n parseNative: (nativeAddress) => {\n // Specific case to make tron a little less flaky, handle the 41 prefix\n if (chainName === ChainName.TRON && nativeAddress) {\n nativeAddress = nativeAddress.startsWith('41')\n ? `0x${nativeAddress.slice(2)}`\n : nativeAddress;\n }\n\n assertNative(nativeAddress, chainName);\n return addressParser(chainName).nativeToNormalized(nativeAddress);\n },\n parseNativeToUnpaddedHex: (nativeAddress) => {\n return addressParser(chainName).parseNative(nativeAddress) as unknown as HexString;\n },\n encoding: AddressEncoding.HEX,\n };\n};\n\nexport const stellarAddressParser: (\n chainName: InferChainNamesForChainType<ChainType.STELLAR>,\n) => AddressParser<InferChainNamesForChainType<ChainType.STELLAR>> = (chainName) => {\n /**\n * Validate if a string is a valid Stellar address.\n *\n * According to SEP-0023 (https://github.com/stellar/stellar-protocol/blob/master/ecosystem/sep-0023.md),\n * Stellar supports multiple address types encoded as base32 ASCII strings:\n * - Account addresses starting with 'G' (56 chars, Ed25519 public key)\n * - Contract addresses starting with 'C' (56 chars, contract ID)\n * - Muxed addresses starting with 'M' (69 chars, muxed account with ID)\n * - Liquidity pool addresses starting with 'L' (56 chars, pool ID)\n * - Claimable balance addresses starting with 'B' (56 chars, balance ID)\n * - Signed payload starting with 'P' (variable length)\n *\n * All addresses are stored in their native ASCII format to preserve type information.\n */\n const isValidStellarAddress = (address: string): boolean => {\n if (!address) return false;\n // Use the StrKey validation methods for all supported address types\n return (\n StrKey.isValidEd25519PublicKey(address) ||\n StrKey.isValidContract(address) ||\n StrKey.isValidMed25519PublicKey(address) ||\n StrKey.isValidLiquidityPool(address) ||\n StrKey.isValidClaimableBalance(address) ||\n StrKey.isValidSignedPayload(address)\n );\n };\n\n /**\n * Convert Stellar ASCII address to normalized hex by encoding the ASCII string as UTF-8 bytes.\n * This preserves the full address including type prefix and allows round-trip conversion.\n */\n const stellarTextEncoder = new TextEncoder();\n const stellarAsciiToNormalized = (address: string): NormalizedHexString => {\n // Convert ASCII address string to UTF-8 bytes, then to hex\n const bytes = stellarTextEncoder.encode(address);\n return normalizeHex(bytesToHexPrefixed(bytes));\n };\n\n /**\n * Convert normalized hex back to Stellar ASCII address by decoding UTF-8 bytes.\n */\n const stellarTextDecoder = new TextDecoder();\n const normalizedToStellarAscii = (normalizedHex: NormalizedHexString): string => {\n // Convert hex to bytes, then decode as UTF-8 string\n const bytes = hexToBytes(normalizedHex as unknown as HexString);\n return stellarTextDecoder.decode(bytes);\n };\n\n return {\n validateNative: (nativeAddress): nativeAddress is StellarString => {\n if (nativeAddress === undefined) return false;\n return isValidStellarAddress(nativeAddress);\n },\n normalizedToNative: (address) => {\n if (address === undefined) return undefined as any;\n // Decode normalized hex back to ASCII Stellar address\n const stellarAddress = normalizedToStellarAscii(address);\n return {\n nativeAddress: stellarAddress as StellarString,\n chainName,\n };\n },\n normalizedToNativeString: (address) => {\n if (address === undefined) return undefined as any;\n return normalizedToStellarAscii(address) as StellarString;\n },\n nativeToNormalized: (nativeAddress) => {\n if (nativeAddress === undefined) return undefined as any;\n const address = getAddress(nativeAddress);\n assertNative(address, chainName);\n // Convert ASCII address to normalized hex\n return stellarAsciiToNormalized(address);\n },\n nativeToBytes32Hex: (nativeAddress) => {\n if (nativeAddress === undefined) return undefined as any;\n const address = getAddress(nativeAddress);\n assertNative(address, chainName);\n // Decode the Stellar address to its raw 32-byte payload based on type\n let rawBytes: Buffer;\n if (StrKey.isValidEd25519PublicKey(address)) {\n // Account addresses (G...) - Ed25519 public key (32 bytes)\n rawBytes = StrKey.decodeEd25519PublicKey(address);\n } else if (StrKey.isValidContract(address)) {\n // Contract addresses (C...) - contract ID (32 bytes)\n rawBytes = StrKey.decodeContract(address);\n } else if (StrKey.isValidLiquidityPool(address)) {\n // Liquidity pool addresses (L...) - pool ID (32 bytes)\n rawBytes = StrKey.decodeLiquidityPool(address);\n } else if (StrKey.isValidClaimableBalance(address)) {\n // Claimable balance addresses (B...) - balance ID (33 bytes: 1-byte version + 32-byte hash)\n // Per SEP-0023: first byte is the claimable balance type (0x00 = V0), followed by 32-byte SHA256 hash\n const fullBytes = StrKey.decodeClaimableBalance(address);\n rawBytes = fullBytes.subarray(1); // Skip the first byte (version), return the 32-byte hash\n } else if (StrKey.isValidMed25519PublicKey(address)) {\n // Muxed addresses (M...) contain additional data beyond 32 bytes\n throw new Error(\n 'nativeToBytes32 is not supported for Stellar muxed addresses (M...)',\n );\n } else if (StrKey.isValidSignedPayload(address)) {\n // Signed payload (P...) has variable length\n throw new Error(\n 'nativeToBytes32 is not supported for Stellar signed payload addresses (P...)',\n );\n } else {\n throw new Error(`Unknown Stellar address type: ${address}`);\n }\n return bytesToHexPrefixed(rawBytes);\n },\n nativeToBytes: (nativeAddress) => {\n if (nativeAddress === undefined) return undefined as any;\n const address = getAddress(nativeAddress);\n assertNative(address, chainName);\n // Convert ASCII address to UTF-8 bytes\n return stellarTextEncoder.encode(address);\n },\n nativeToBytes32: (nativeAddress) => {\n if (nativeAddress === undefined) return undefined as any;\n // Use nativeToBytes32Hex and convert to Uint8Array\n const hex = addressParser(chainName).nativeToBytes32Hex(nativeAddress);\n return hexToBytes(hex);\n },\n parseNative: (nativeAddress) => {\n assertNative(nativeAddress, chainName);\n return addressParser(chainName).nativeToNormalized(nativeAddress);\n },\n parseNativeToUnpaddedHex: (nativeAddress) => {\n assertNative(nativeAddress, chainName);\n const normalized = addressParser(chainName).nativeToNormalized(nativeAddress);\n return normalized as unknown as HexString;\n },\n encoding: AddressEncoding.STELLAR,\n };\n};\n\n// Starknet addresses do not have handle hexzero padding, so we just return the address as is\nexport const starknetAddressParser = (\n chainName: ChainsByEncoding[HexString],\n): AddressParser<ChainsByEncoding[HexString]> => {\n return {\n ...hexAddressParser(chainName),\n validateNative: (nativeAddress): nativeAddress is HexString => {\n if (nativeAddress === undefined) return false;\n return isHexString(nativeAddress);\n },\n parseNative: (nativeAddress) => {\n if (nativeAddress === undefined) return undefined as any;\n // We can't trust starknet.js strings, they may actually be bigints!\n // so just convert everything to hex first, then convert to normalized\n nativeAddress = `0x${BigInt(nativeAddress).toString(16)}`;\n assertNative(nativeAddress, chainName);\n return addressParser(chainName).nativeToNormalized(nativeAddress);\n },\n normalizedToNative: (address) => {\n if (address === undefined) return undefined as any;\n return {\n nativeAddress: address,\n chainName,\n };\n },\n normalizedToNativeString: (address) => {\n if (address === undefined) return undefined as any;\n return address;\n },\n };\n};\n"]}