@layerzerolabs/chain-utils 0.2.100 → 0.2.101

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.
Files changed (57) hide show
  1. package/dist/DZ5W2GHJ.js +16 -0
  2. package/dist/DZ5W2GHJ.js.map +1 -0
  3. package/dist/{Y7D2L34Q.js → UOJMKUOB.js} +215 -219
  4. package/dist/UOJMKUOB.js.map +1 -0
  5. package/dist/addressParser/canton.d.ts +5 -0
  6. package/dist/addressParser/canton.d.ts.map +1 -0
  7. package/dist/addressParser/canton.js +4 -0
  8. package/dist/addressParser/canton.js.map +1 -0
  9. package/dist/addressParser/hex.d.ts +5 -0
  10. package/dist/addressParser/hex.d.ts.map +1 -0
  11. package/dist/addressParser/hex.js +4 -0
  12. package/dist/addressParser/hex.js.map +1 -0
  13. package/dist/addressParser/index.d.ts +20 -0
  14. package/dist/addressParser/index.d.ts.map +1 -0
  15. package/dist/addressParser/index.js +4 -0
  16. package/dist/addressParser/index.js.map +1 -0
  17. package/dist/addressParser/initia.d.ts +4 -0
  18. package/dist/addressParser/initia.d.ts.map +1 -0
  19. package/dist/addressParser/initia.js +4 -0
  20. package/dist/addressParser/initia.js.map +1 -0
  21. package/dist/addressParser/solana.d.ts +4 -0
  22. package/dist/addressParser/solana.d.ts.map +1 -0
  23. package/dist/addressParser/solana.js +4 -0
  24. package/dist/addressParser/solana.js.map +1 -0
  25. package/dist/addressParser/starknet.d.ts +5 -0
  26. package/dist/addressParser/starknet.d.ts.map +1 -0
  27. package/dist/addressParser/starknet.js +4 -0
  28. package/dist/addressParser/starknet.js.map +1 -0
  29. package/dist/addressParser/stellar.d.ts +4 -0
  30. package/dist/addressParser/stellar.d.ts.map +1 -0
  31. package/dist/addressParser/stellar.js +4 -0
  32. package/dist/addressParser/stellar.js.map +1 -0
  33. package/dist/addressParser/ton.d.ts +4 -0
  34. package/dist/addressParser/ton.d.ts.map +1 -0
  35. package/dist/addressParser/ton.js +4 -0
  36. package/dist/addressParser/ton.js.map +1 -0
  37. package/dist/{addressParser.d.ts → addressParser/types.d.ts} +3 -19
  38. package/dist/addressParser/types.d.ts.map +1 -0
  39. package/dist/addressParser/types.js +3 -0
  40. package/dist/addressParser/types.js.map +1 -0
  41. package/dist/addressParser/utils.d.ts +5 -0
  42. package/dist/addressParser/utils.d.ts.map +1 -0
  43. package/dist/addressParser/utils.js +4 -0
  44. package/dist/addressParser/utils.js.map +1 -0
  45. package/dist/index.js +2 -5
  46. package/dist/index.js.map +1 -1
  47. package/package.json +9 -9
  48. package/dist/CWKWODSW.js +0 -40
  49. package/dist/CWKWODSW.js.map +0 -1
  50. package/dist/PYS2ZW6G.js +0 -1341
  51. package/dist/PYS2ZW6G.js.map +0 -1
  52. package/dist/Y7D2L34Q.js.map +0 -1
  53. package/dist/addressParser.d.ts.map +0 -1
  54. package/dist/addressParser.js +0 -4
  55. package/dist/addressParser.js.map +0 -1
  56. package/dist/addressParser.test.js +0 -18995
  57. package/dist/addressParser.test.js.map +0 -1
@@ -0,0 +1,16 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
3
+
4
+ // src/addressParser/types.ts
5
+ var AddressEncoding = /* @__PURE__ */ (function(AddressEncoding2) {
6
+ AddressEncoding2["HEX"] = "hex";
7
+ AddressEncoding2["BASE58"] = "base58";
8
+ AddressEncoding2["TON"] = "ton";
9
+ AddressEncoding2["INITIA"] = "initia";
10
+ AddressEncoding2["STELLAR"] = "stellar";
11
+ return AddressEncoding2;
12
+ })({});
13
+
14
+ export { AddressEncoding, __name };
15
+ //# sourceMappingURL=DZ5W2GHJ.js.map
16
+ //# sourceMappingURL=DZ5W2GHJ.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/addressParser/types.ts"],"names":["AddressEncoding"],"mappings":";;;;AAeO,IAAKA,eAAAA,6BAAAA,gBAAAA,EAAAA;;;;;;AAAAA,EAAAA,OAAAA,gBAAAA","file":"DZ5W2GHJ.js","sourcesContent":["import type { Address } from '@ton/core';\n\nimport type { HexString, NormalizedHexString } from '@layerzerolabs/common-chain-model';\nimport type {\n ChainName,\n ChainNativeAddress,\n InferChainTypeForChainName,\n ResolvedEncodingForChainName,\n} from '@layerzerolabs/layerzero-definitions';\nimport type { MaybeUndefinedMapped } from '@layerzerolabs/typescript-utils';\n\nexport type NativeOrString<T extends ChainName> =\n | ChainNativeAddress<T>\n | 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 normalizedToBytes32Hex: <Address extends NormalizedHexString | undefined>(\n address: Address,\n ) => MaybeUndefinedMapped<Address, HexString>;\n normalizedToBytes32: <Address extends NormalizedHexString | undefined>(\n address: Address,\n ) => MaybeUndefinedMapped<Address, Uint8Array>;\n bytes32ToNormalized: <B extends HexString | undefined>(\n bytes32Hex: B,\n ) => MaybeUndefinedMapped<B, NormalizedHexString>;\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"]}
@@ -1,93 +1,51 @@
1
- import { init_esm_shims, __name } from './CWKWODSW.js';
2
- import { AccAddress } from '@initia/initia.js';
3
- import { StrKey } from '@stellar/stellar-sdk';
4
- import bs58 from 'bs58';
5
- import { addressToHex, bigintToAddress, parseTonAddress } from '@layerzerolabs/address-utils-ton';
1
+ import { __name, AddressEncoding } from './DZ5W2GHJ.js';
2
+ import { ChainName } from '@layerzerolabs/layerzero-definitions';
6
3
  import { normalizeHex } from '@layerzerolabs/common-chain-model';
7
4
  import { hexToBytes, hexZeroPad, bytesToHexPrefixed, isBase58, isHexString } from '@layerzerolabs/common-encoding-utils';
8
- import { ChainName } from '@layerzerolabs/layerzero-definitions';
9
5
  import { StaticChainConfigs } from '@layerzerolabs/static-chain-info';
6
+ import { AccAddress } from '@initia/initia.js';
7
+ import bs58 from 'bs58';
8
+ import { StrKey } from '@stellar/stellar-sdk';
9
+ import { addressToHex, bigintToAddress, parseTonAddress } from '@layerzerolabs/address-utils-ton';
10
10
 
11
- // src/addressParser.ts
12
- init_esm_shims();
13
- var AddressEncoding = /* @__PURE__ */ (function(AddressEncoding2) {
14
- AddressEncoding2["HEX"] = "hex";
15
- AddressEncoding2["BASE58"] = "base58";
16
- AddressEncoding2["TON"] = "ton";
17
- AddressEncoding2["INITIA"] = "initia";
18
- AddressEncoding2["STELLAR"] = "stellar";
19
- return AddressEncoding2;
20
- })({});
21
- function addressParser(chainName) {
22
- if (chainName === ChainName.TON) return tonAddressParser(chainName);
23
- if (chainName === ChainName.SOLANA) return base58AddressParser(chainName);
24
- if (chainName === ChainName.INITIA) return initiaAddressParser(chainName);
25
- if (chainName === ChainName.STELLAR) return stellarAddressParser(chainName);
26
- if (chainName === ChainName.STARKNET) return starknetAddressParser(chainName);
27
- if (chainName === ChainName.CANTON) return cantonAddressParser(chainName);
28
- return hexAddressParser(chainName);
29
- }
30
- __name(addressParser, "addressParser");
31
- (function(addressParser2) {
32
- addressParser2.normalizedToUnpaddedString = (address) => {
33
- return address.toString();
34
- };
35
- addressParser2.normalizedToBigInt = (address) => {
36
- return BigInt(address);
37
- };
38
- addressParser2.parseNative = (nativeAddress) => {
39
- return addressParser2(nativeAddress.chainName).parseNative(nativeAddress.nativeAddress);
40
- };
41
- })(addressParser || (addressParser = {}));
42
- function assertNative(nativeAddress, expectedChainName) {
43
- if (!addressParser(expectedChainName).validateNative(nativeAddress)) {
44
- throw new Error('Cannot convert: "' + nativeAddress + '" - The native address does not match the expected format for the chain: ' + expectedChainName);
45
- }
46
- }
47
- __name(assertNative, "assertNative");
48
- var getAddress = /* @__PURE__ */ __name((nativeAddress) => {
49
- return typeof nativeAddress === "object" ? nativeAddress.nativeAddress : nativeAddress;
50
- }, "getAddress");
51
- var tonAddressParser = /* @__PURE__ */ __name((chainName) => {
11
+ var hexAddressParser = /* @__PURE__ */ __name((chainName) => {
52
12
  return {
53
13
  validateNative: /* @__PURE__ */ __name((nativeAddress) => {
54
- if (nativeAddress === void 0) {
55
- return false;
56
- }
57
- try {
58
- parseTonAddress(nativeAddress);
59
- return true;
60
- } catch {
61
- return false;
62
- }
14
+ if (nativeAddress === void 0) return false;
15
+ return isHexString(nativeAddress);
63
16
  }, "validateNative"),
64
17
  normalizedToNative: /* @__PURE__ */ __name((address) => {
65
18
  if (address === void 0) return void 0;
66
- const numericalValue = addressParser.normalizedToBigInt(address);
19
+ const nativeByteLength = StaticChainConfigs.getAddressSizeInBytes(chainName);
67
20
  return {
68
- // TODO: use Base64 native format instead of hex for TON addresses
69
- nativeAddress: bigintToAddress(numericalValue).toString(),
21
+ // we could have EIP-55 here, but omitted for now
22
+ nativeAddress: hexZeroPad(address, nativeByteLength),
70
23
  chainName
71
24
  };
72
25
  }, "normalizedToNative"),
73
26
  normalizedToNativeString: /* @__PURE__ */ __name((address) => {
74
27
  if (address === void 0) return void 0;
75
- return addressParser(chainName).normalizedToNative(address).nativeAddress;
28
+ const nativeByteLength = StaticChainConfigs.getAddressSizeInBytes(chainName);
29
+ return hexZeroPad(address, nativeByteLength);
76
30
  }, "normalizedToNativeString"),
77
31
  nativeToNormalized: /* @__PURE__ */ __name((nativeAddress) => {
78
32
  if (nativeAddress === void 0) return void 0;
79
33
  const address = getAddress(nativeAddress);
80
34
  assertNative(address, chainName);
81
- return normalizeHex(addressToHex(address));
35
+ return normalizeHex(address);
82
36
  }, "nativeToNormalized"),
83
- nativeToBytes32Hex: /* @__PURE__ */ __name((nativeAddress) => {
84
- if (nativeAddress === void 0) return void 0;
85
- return hexZeroPad(addressParser(chainName).nativeToNormalized(nativeAddress), 32);
86
- }, "nativeToBytes32Hex"),
87
37
  nativeToBytes: /* @__PURE__ */ __name((nativeAddress) => {
88
38
  if (nativeAddress === void 0) return void 0;
89
- return hexToBytes(addressParser(chainName).nativeToBytes32Hex(nativeAddress));
39
+ const address = getAddress(nativeAddress);
40
+ assertNative(address, chainName);
41
+ return hexToBytes(address);
90
42
  }, "nativeToBytes"),
43
+ nativeToBytes32Hex: /* @__PURE__ */ __name((nativeAddress) => {
44
+ if (nativeAddress === void 0) return void 0;
45
+ const address = getAddress(nativeAddress);
46
+ assertNative(address, chainName);
47
+ return hexZeroPad(address, 32);
48
+ }, "nativeToBytes32Hex"),
91
49
  nativeToBytes32: /* @__PURE__ */ __name((nativeAddress) => {
92
50
  if (nativeAddress === void 0) return void 0;
93
51
  return hexToBytes(addressParser(chainName).nativeToBytes32Hex(nativeAddress));
@@ -105,18 +63,107 @@ var tonAddressParser = /* @__PURE__ */ __name((chainName) => {
105
63
  return normalizeHex(bytes32Hex);
106
64
  }, "bytes32ToNormalized"),
107
65
  parseNative: /* @__PURE__ */ __name((nativeAddress) => {
66
+ if (chainName === ChainName.TRON && nativeAddress) {
67
+ nativeAddress = nativeAddress.startsWith("41") ? `0x${nativeAddress.slice(2)}` : nativeAddress;
68
+ }
108
69
  assertNative(nativeAddress, chainName);
109
70
  return addressParser(chainName).nativeToNormalized(nativeAddress);
110
71
  }, "parseNative"),
111
72
  parseNativeToUnpaddedHex: /* @__PURE__ */ __name((nativeAddress) => {
112
73
  return addressParser(chainName).parseNative(nativeAddress);
113
74
  }, "parseNativeToUnpaddedHex"),
114
- tonToNormalized: /* @__PURE__ */ __name((tonAddress) => {
115
- return addressParser(chainName).parseNative(addressToHex(tonAddress));
116
- }, "tonToNormalized"),
117
- encoding: "ton"
75
+ encoding: AddressEncoding.HEX
118
76
  };
119
- }, "tonAddressParser");
77
+ }, "hexAddressParser");
78
+
79
+ // src/addressParser/canton.ts
80
+ var CANTON_PARTY_ID_REGEX = /^(.+)::([0-9a-fA-F]+)$/;
81
+ var CANTON_FINGERPRINT_HEX_LENGTH = 68;
82
+ var CANTON_CONTRACT_ID_HEX_LENGTH = 138;
83
+ var CANTON_TYPE_CONTRACT = "00";
84
+ var CANTON_TYPE_PARTY = "01";
85
+ var matchCantonPartyId = /* @__PURE__ */ __name((nativeAddress) => {
86
+ const match = CANTON_PARTY_ID_REGEX.exec(nativeAddress);
87
+ if (!match) return null;
88
+ const [, hint, fingerprint] = match;
89
+ return {
90
+ hint,
91
+ fingerprint
92
+ };
93
+ }, "matchCantonPartyId");
94
+ var cantonAddressParser = /* @__PURE__ */ __name((chainName) => {
95
+ const base = hexAddressParser(chainName);
96
+ const extractCantonAddress = /* @__PURE__ */ __name((nativeAddress) => {
97
+ const party = matchCantonPartyId(nativeAddress);
98
+ if (party) {
99
+ const hintHex = Buffer.from(party.hint, "utf-8").toString("hex");
100
+ return `0x${party.fingerprint}${hintHex}`;
101
+ }
102
+ const hex = nativeAddress.startsWith("0x") ? nativeAddress : `0x${nativeAddress}`;
103
+ return hex.toLowerCase();
104
+ }, "extractCantonAddress");
105
+ const normalizeCantonAddress = /* @__PURE__ */ __name((nativeAddress) => {
106
+ const party = matchCantonPartyId(nativeAddress);
107
+ if (party) {
108
+ const hintHex = Buffer.from(party.hint, "utf-8").toString("hex");
109
+ return normalizeHex(`0x${party.fingerprint}${hintHex}${CANTON_TYPE_PARTY}`);
110
+ }
111
+ const bare = nativeAddress.startsWith("0x") ? nativeAddress.slice(2) : nativeAddress;
112
+ return normalizeHex(`0x${bare}${CANTON_TYPE_CONTRACT}`);
113
+ }, "normalizeCantonAddress");
114
+ const reconstructCantonAddress = /* @__PURE__ */ __name((hex) => {
115
+ const body = hex.startsWith("0x") ? hex.slice(2) : hex;
116
+ const typeByte = body.slice(-2);
117
+ const payload = body.slice(0, -2);
118
+ if (typeByte === CANTON_TYPE_PARTY) {
119
+ const fingerprint = payload.slice(0, CANTON_FINGERPRINT_HEX_LENGTH);
120
+ const hintHex = payload.slice(CANTON_FINGERPRINT_HEX_LENGTH);
121
+ const hint = Buffer.from(hintHex, "hex").toString("utf-8");
122
+ return `${hint}::${fingerprint}`;
123
+ }
124
+ if (typeByte === CANTON_TYPE_CONTRACT) {
125
+ return payload.padStart(CANTON_CONTRACT_ID_HEX_LENGTH, "0");
126
+ }
127
+ throw new Error(`Cannot reconstruct Canton address from normalized hex: ${hex}`);
128
+ }, "reconstructCantonAddress");
129
+ return {
130
+ ...base,
131
+ validateNative: /* @__PURE__ */ __name((nativeAddress) => {
132
+ if (nativeAddress === void 0) return false;
133
+ return isHexString(nativeAddress) || matchCantonPartyId(nativeAddress) !== null;
134
+ }, "validateNative"),
135
+ normalizedToNative: /* @__PURE__ */ __name((address) => {
136
+ if (address === void 0) return void 0;
137
+ return {
138
+ nativeAddress: reconstructCantonAddress(address),
139
+ chainName
140
+ };
141
+ }, "normalizedToNative"),
142
+ normalizedToNativeString: /* @__PURE__ */ __name((address) => {
143
+ if (address === void 0) return void 0;
144
+ return reconstructCantonAddress(address);
145
+ }, "normalizedToNativeString"),
146
+ nativeToNormalized: /* @__PURE__ */ __name((nativeAddress) => {
147
+ if (nativeAddress === void 0) return void 0;
148
+ return normalizeCantonAddress(nativeAddress);
149
+ }, "nativeToNormalized"),
150
+ nativeToBytes: /* @__PURE__ */ __name((nativeAddress) => {
151
+ if (nativeAddress === void 0) return void 0;
152
+ const address = extractCantonAddress(nativeAddress);
153
+ return hexToBytes(address);
154
+ }, "nativeToBytes"),
155
+ nativeToBytes32Hex: /* @__PURE__ */ __name((_nativeAddress) => {
156
+ return void 0;
157
+ }, "nativeToBytes32Hex"),
158
+ parseNative: /* @__PURE__ */ __name((nativeAddress) => {
159
+ if (nativeAddress === void 0) return void 0;
160
+ return normalizeCantonAddress(nativeAddress);
161
+ }, "parseNative"),
162
+ parseNativeToUnpaddedHex: /* @__PURE__ */ __name((nativeAddress) => {
163
+ return addressParser(chainName).parseNative(nativeAddress);
164
+ }, "parseNativeToUnpaddedHex")
165
+ };
166
+ }, "cantonAddressParser");
120
167
  var initiaAddressParser = /* @__PURE__ */ __name((chainName) => {
121
168
  return {
122
169
  validateNative: /* @__PURE__ */ __name((nativeAddress) => {
@@ -182,7 +229,7 @@ var initiaAddressParser = /* @__PURE__ */ __name((chainName) => {
182
229
  parseNativeToUnpaddedHex: /* @__PURE__ */ __name((nativeAddress) => {
183
230
  return addressParser(chainName).parseNative(nativeAddress);
184
231
  }, "parseNativeToUnpaddedHex"),
185
- encoding: "initia"
232
+ encoding: AddressEncoding.INITIA
186
233
  };
187
234
  }, "initiaAddressParser");
188
235
  var base58AddressParser = /* @__PURE__ */ __name((chainName) => {
@@ -242,76 +289,35 @@ var base58AddressParser = /* @__PURE__ */ __name((chainName) => {
242
289
  parseNativeToUnpaddedHex: /* @__PURE__ */ __name((nativeAddress) => {
243
290
  return addressParser(chainName).parseNative(nativeAddress);
244
291
  }, "parseNativeToUnpaddedHex"),
245
- encoding: "base58"
292
+ encoding: AddressEncoding.BASE58
246
293
  };
247
294
  }, "base58AddressParser");
248
- var hexAddressParser = /* @__PURE__ */ __name((chainName) => {
295
+ var starknetAddressParser = /* @__PURE__ */ __name((chainName) => {
249
296
  return {
297
+ ...hexAddressParser(chainName),
250
298
  validateNative: /* @__PURE__ */ __name((nativeAddress) => {
251
299
  if (nativeAddress === void 0) return false;
252
300
  return isHexString(nativeAddress);
253
301
  }, "validateNative"),
302
+ parseNative: /* @__PURE__ */ __name((nativeAddress) => {
303
+ if (nativeAddress === void 0) return void 0;
304
+ nativeAddress = `0x${BigInt(nativeAddress).toString(16)}`;
305
+ assertNative(nativeAddress, chainName);
306
+ return addressParser(chainName).nativeToNormalized(nativeAddress);
307
+ }, "parseNative"),
254
308
  normalizedToNative: /* @__PURE__ */ __name((address) => {
255
309
  if (address === void 0) return void 0;
256
- const nativeByteLength = StaticChainConfigs.getAddressSizeInBytes(chainName);
257
310
  return {
258
- // we could have EIP-55 here, but omitted for now
259
- nativeAddress: hexZeroPad(address, nativeByteLength),
311
+ nativeAddress: address,
260
312
  chainName
261
313
  };
262
314
  }, "normalizedToNative"),
263
315
  normalizedToNativeString: /* @__PURE__ */ __name((address) => {
264
316
  if (address === void 0) return void 0;
265
- const nativeByteLength = StaticChainConfigs.getAddressSizeInBytes(chainName);
266
- return hexZeroPad(address, nativeByteLength);
267
- }, "normalizedToNativeString"),
268
- nativeToNormalized: /* @__PURE__ */ __name((nativeAddress) => {
269
- if (nativeAddress === void 0) return void 0;
270
- const address = getAddress(nativeAddress);
271
- assertNative(address, chainName);
272
- return normalizeHex(address);
273
- }, "nativeToNormalized"),
274
- nativeToBytes: /* @__PURE__ */ __name((nativeAddress) => {
275
- if (nativeAddress === void 0) return void 0;
276
- const address = getAddress(nativeAddress);
277
- assertNative(address, chainName);
278
- return hexToBytes(address);
279
- }, "nativeToBytes"),
280
- nativeToBytes32Hex: /* @__PURE__ */ __name((nativeAddress) => {
281
- if (nativeAddress === void 0) return void 0;
282
- const address = getAddress(nativeAddress);
283
- assertNative(address, chainName);
284
- return hexZeroPad(address, 32);
285
- }, "nativeToBytes32Hex"),
286
- nativeToBytes32: /* @__PURE__ */ __name((nativeAddress) => {
287
- if (nativeAddress === void 0) return void 0;
288
- return hexToBytes(addressParser(chainName).nativeToBytes32Hex(nativeAddress));
289
- }, "nativeToBytes32"),
290
- normalizedToBytes32Hex: /* @__PURE__ */ __name((address) => {
291
- if (address === void 0) return void 0;
292
- return hexZeroPad(address, 32);
293
- }, "normalizedToBytes32Hex"),
294
- normalizedToBytes32: /* @__PURE__ */ __name((address) => {
295
- if (address === void 0) return void 0;
296
- return hexToBytes(addressParser(chainName).normalizedToBytes32Hex(address));
297
- }, "normalizedToBytes32"),
298
- bytes32ToNormalized: /* @__PURE__ */ __name((bytes32Hex) => {
299
- if (bytes32Hex === void 0) return void 0;
300
- return normalizeHex(bytes32Hex);
301
- }, "bytes32ToNormalized"),
302
- parseNative: /* @__PURE__ */ __name((nativeAddress) => {
303
- if (chainName === ChainName.TRON && nativeAddress) {
304
- nativeAddress = nativeAddress.startsWith("41") ? `0x${nativeAddress.slice(2)}` : nativeAddress;
305
- }
306
- assertNative(nativeAddress, chainName);
307
- return addressParser(chainName).nativeToNormalized(nativeAddress);
308
- }, "parseNative"),
309
- parseNativeToUnpaddedHex: /* @__PURE__ */ __name((nativeAddress) => {
310
- return addressParser(chainName).parseNative(nativeAddress);
311
- }, "parseNativeToUnpaddedHex"),
312
- encoding: "hex"
317
+ return address;
318
+ }, "normalizedToNativeString")
313
319
  };
314
- }, "hexAddressParser");
320
+ }, "starknetAddressParser");
315
321
  var BYTES32_HEX_LENGTH = 64;
316
322
  var hexToStellarNative = /* @__PURE__ */ __name((address) => {
317
323
  if (!address || !address.startsWith("0x") || !isHexString(address)) return address;
@@ -417,123 +423,113 @@ var stellarAddressParser = /* @__PURE__ */ __name((chainName) => {
417
423
  const normalized = addressParser(chainName).nativeToNormalized(nativeAddress);
418
424
  return normalized;
419
425
  }, "parseNativeToUnpaddedHex"),
420
- encoding: "stellar"
426
+ encoding: AddressEncoding.STELLAR
421
427
  };
422
428
  }, "stellarAddressParser");
423
- var CANTON_PARTY_ID_REGEX = /^(.+)::([0-9a-fA-F]+)$/;
424
- var CANTON_FINGERPRINT_HEX_LENGTH = 68;
425
- var CANTON_CONTRACT_ID_HEX_LENGTH = 138;
426
- var CANTON_TYPE_CONTRACT = "00";
427
- var CANTON_TYPE_PARTY = "01";
428
- var matchCantonPartyId = /* @__PURE__ */ __name((nativeAddress) => {
429
- const match = CANTON_PARTY_ID_REGEX.exec(nativeAddress);
430
- if (!match) return null;
431
- const [, hint, fingerprint] = match;
432
- return {
433
- hint,
434
- fingerprint
435
- };
436
- }, "matchCantonPartyId");
437
- var cantonAddressParser = /* @__PURE__ */ __name((chainName) => {
438
- const base = hexAddressParser(chainName);
439
- const extractCantonAddress = /* @__PURE__ */ __name((nativeAddress) => {
440
- const party = matchCantonPartyId(nativeAddress);
441
- if (party) {
442
- const hintHex = Buffer.from(party.hint, "utf-8").toString("hex");
443
- return `0x${party.fingerprint}${hintHex}`;
444
- }
445
- const hex = nativeAddress.startsWith("0x") ? nativeAddress : `0x${nativeAddress}`;
446
- return hex.toLowerCase();
447
- }, "extractCantonAddress");
448
- const normalizeCantonAddress = /* @__PURE__ */ __name((nativeAddress) => {
449
- const party = matchCantonPartyId(nativeAddress);
450
- if (party) {
451
- const hintHex = Buffer.from(party.hint, "utf-8").toString("hex");
452
- return normalizeHex(`0x${party.fingerprint}${hintHex}${CANTON_TYPE_PARTY}`);
453
- }
454
- const bare = nativeAddress.startsWith("0x") ? nativeAddress.slice(2) : nativeAddress;
455
- return normalizeHex(`0x${bare}${CANTON_TYPE_CONTRACT}`);
456
- }, "normalizeCantonAddress");
457
- const reconstructCantonAddress = /* @__PURE__ */ __name((hex) => {
458
- const body = hex.startsWith("0x") ? hex.slice(2) : hex;
459
- const typeByte = body.slice(-2);
460
- const payload = body.slice(0, -2);
461
- if (typeByte === CANTON_TYPE_PARTY) {
462
- const fingerprint = payload.slice(0, CANTON_FINGERPRINT_HEX_LENGTH);
463
- const hintHex = payload.slice(CANTON_FINGERPRINT_HEX_LENGTH);
464
- const hint = Buffer.from(hintHex, "hex").toString("utf-8");
465
- return `${hint}::${fingerprint}`;
466
- }
467
- if (typeByte === CANTON_TYPE_CONTRACT) {
468
- return payload.padStart(CANTON_CONTRACT_ID_HEX_LENGTH, "0");
469
- }
470
- throw new Error(`Cannot reconstruct Canton address from normalized hex: ${hex}`);
471
- }, "reconstructCantonAddress");
429
+ var tonAddressParser = /* @__PURE__ */ __name((chainName) => {
472
430
  return {
473
- ...base,
474
431
  validateNative: /* @__PURE__ */ __name((nativeAddress) => {
475
- if (nativeAddress === void 0) return false;
476
- return isHexString(nativeAddress) || matchCantonPartyId(nativeAddress) !== null;
432
+ if (nativeAddress === void 0) {
433
+ return false;
434
+ }
435
+ try {
436
+ parseTonAddress(nativeAddress);
437
+ return true;
438
+ } catch {
439
+ return false;
440
+ }
477
441
  }, "validateNative"),
478
442
  normalizedToNative: /* @__PURE__ */ __name((address) => {
479
443
  if (address === void 0) return void 0;
444
+ const numericalValue = addressParser.normalizedToBigInt(address);
480
445
  return {
481
- nativeAddress: reconstructCantonAddress(address),
446
+ // TODO: use Base64 native format instead of hex for TON addresses
447
+ nativeAddress: bigintToAddress(numericalValue).toString(),
482
448
  chainName
483
449
  };
484
450
  }, "normalizedToNative"),
485
451
  normalizedToNativeString: /* @__PURE__ */ __name((address) => {
486
452
  if (address === void 0) return void 0;
487
- return reconstructCantonAddress(address);
453
+ return addressParser(chainName).normalizedToNative(address).nativeAddress;
488
454
  }, "normalizedToNativeString"),
489
455
  nativeToNormalized: /* @__PURE__ */ __name((nativeAddress) => {
490
456
  if (nativeAddress === void 0) return void 0;
491
- return normalizeCantonAddress(nativeAddress);
457
+ const address = getAddress(nativeAddress);
458
+ assertNative(address, chainName);
459
+ return normalizeHex(addressToHex(address));
492
460
  }, "nativeToNormalized"),
461
+ nativeToBytes32Hex: /* @__PURE__ */ __name((nativeAddress) => {
462
+ if (nativeAddress === void 0) return void 0;
463
+ return hexZeroPad(addressParser(chainName).nativeToNormalized(nativeAddress), 32);
464
+ }, "nativeToBytes32Hex"),
493
465
  nativeToBytes: /* @__PURE__ */ __name((nativeAddress) => {
494
466
  if (nativeAddress === void 0) return void 0;
495
- const address = extractCantonAddress(nativeAddress);
496
- return hexToBytes(address);
467
+ return hexToBytes(addressParser(chainName).nativeToBytes32Hex(nativeAddress));
497
468
  }, "nativeToBytes"),
498
- nativeToBytes32Hex: /* @__PURE__ */ __name((_nativeAddress) => {
499
- return void 0;
500
- }, "nativeToBytes32Hex"),
501
- parseNative: /* @__PURE__ */ __name((nativeAddress) => {
469
+ nativeToBytes32: /* @__PURE__ */ __name((nativeAddress) => {
502
470
  if (nativeAddress === void 0) return void 0;
503
- return normalizeCantonAddress(nativeAddress);
504
- }, "parseNative"),
505
- parseNativeToUnpaddedHex: /* @__PURE__ */ __name((nativeAddress) => {
506
- return addressParser(chainName).parseNative(nativeAddress);
507
- }, "parseNativeToUnpaddedHex")
508
- };
509
- }, "cantonAddressParser");
510
- var starknetAddressParser = /* @__PURE__ */ __name((chainName) => {
511
- return {
512
- ...hexAddressParser(chainName),
513
- validateNative: /* @__PURE__ */ __name((nativeAddress) => {
514
- if (nativeAddress === void 0) return false;
515
- return isHexString(nativeAddress);
516
- }, "validateNative"),
471
+ return hexToBytes(addressParser(chainName).nativeToBytes32Hex(nativeAddress));
472
+ }, "nativeToBytes32"),
473
+ normalizedToBytes32Hex: /* @__PURE__ */ __name((address) => {
474
+ if (address === void 0) return void 0;
475
+ return hexZeroPad(address, 32);
476
+ }, "normalizedToBytes32Hex"),
477
+ normalizedToBytes32: /* @__PURE__ */ __name((address) => {
478
+ if (address === void 0) return void 0;
479
+ return hexToBytes(addressParser(chainName).normalizedToBytes32Hex(address));
480
+ }, "normalizedToBytes32"),
481
+ bytes32ToNormalized: /* @__PURE__ */ __name((bytes32Hex) => {
482
+ if (bytes32Hex === void 0) return void 0;
483
+ return normalizeHex(bytes32Hex);
484
+ }, "bytes32ToNormalized"),
517
485
  parseNative: /* @__PURE__ */ __name((nativeAddress) => {
518
- if (nativeAddress === void 0) return void 0;
519
- nativeAddress = `0x${BigInt(nativeAddress).toString(16)}`;
520
486
  assertNative(nativeAddress, chainName);
521
487
  return addressParser(chainName).nativeToNormalized(nativeAddress);
522
488
  }, "parseNative"),
523
- normalizedToNative: /* @__PURE__ */ __name((address) => {
524
- if (address === void 0) return void 0;
525
- return {
526
- nativeAddress: address,
527
- chainName
528
- };
529
- }, "normalizedToNative"),
530
- normalizedToNativeString: /* @__PURE__ */ __name((address) => {
531
- if (address === void 0) return void 0;
532
- return address;
533
- }, "normalizedToNativeString")
489
+ parseNativeToUnpaddedHex: /* @__PURE__ */ __name((nativeAddress) => {
490
+ return addressParser(chainName).parseNative(nativeAddress);
491
+ }, "parseNativeToUnpaddedHex"),
492
+ tonToNormalized: /* @__PURE__ */ __name((tonAddress) => {
493
+ return addressParser(chainName).parseNative(addressToHex(tonAddress));
494
+ }, "tonToNormalized"),
495
+ encoding: AddressEncoding.TON
534
496
  };
535
- }, "starknetAddressParser");
497
+ }, "tonAddressParser");
498
+
499
+ // src/addressParser/index.ts
500
+ function addressParser(chainName) {
501
+ if (chainName === ChainName.TON) return tonAddressParser(chainName);
502
+ if (chainName === ChainName.SOLANA) return base58AddressParser(chainName);
503
+ if (chainName === ChainName.INITIA) return initiaAddressParser(chainName);
504
+ if (chainName === ChainName.STELLAR) return stellarAddressParser(chainName);
505
+ if (chainName === ChainName.STARKNET) return starknetAddressParser(chainName);
506
+ if (chainName === ChainName.CANTON) return cantonAddressParser(chainName);
507
+ return hexAddressParser(chainName);
508
+ }
509
+ __name(addressParser, "addressParser");
510
+ (function(addressParser2) {
511
+ addressParser2.normalizedToUnpaddedString = (address) => {
512
+ return address.toString();
513
+ };
514
+ addressParser2.normalizedToBigInt = (address) => {
515
+ return BigInt(address);
516
+ };
517
+ addressParser2.parseNative = (nativeAddress) => {
518
+ return addressParser2(nativeAddress.chainName).parseNative(nativeAddress.nativeAddress);
519
+ };
520
+ })(addressParser || (addressParser = {}));
521
+
522
+ // src/addressParser/utils.ts
523
+ var getAddress = /* @__PURE__ */ __name((nativeAddress) => {
524
+ return typeof nativeAddress === "object" ? nativeAddress.nativeAddress : nativeAddress;
525
+ }, "getAddress");
526
+ function assertNative(nativeAddress, expectedChainName) {
527
+ if (!addressParser(expectedChainName).validateNative(nativeAddress)) {
528
+ throw new Error('Cannot convert: "' + nativeAddress + '" - The native address does not match the expected format for the chain: ' + expectedChainName);
529
+ }
530
+ }
531
+ __name(assertNative, "assertNative");
536
532
 
537
- export { AddressEncoding, addressParser, base58AddressParser, cantonAddressParser, hexAddressParser, initiaAddressParser, starknetAddressParser, stellarAddressParser, tonAddressParser };
538
- //# sourceMappingURL=Y7D2L34Q.js.map
539
- //# sourceMappingURL=Y7D2L34Q.js.map
533
+ export { addressParser, assertNative, base58AddressParser, cantonAddressParser, getAddress, hexAddressParser, initiaAddressParser, starknetAddressParser, stellarAddressParser, tonAddressParser };
534
+ //# sourceMappingURL=UOJMKUOB.js.map
535
+ //# sourceMappingURL=UOJMKUOB.js.map