@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.
- package/dist/DZ5W2GHJ.js +16 -0
- package/dist/DZ5W2GHJ.js.map +1 -0
- package/dist/{Y7D2L34Q.js → UOJMKUOB.js} +215 -219
- package/dist/UOJMKUOB.js.map +1 -0
- package/dist/addressParser/canton.d.ts +5 -0
- package/dist/addressParser/canton.d.ts.map +1 -0
- package/dist/addressParser/canton.js +4 -0
- package/dist/addressParser/canton.js.map +1 -0
- package/dist/addressParser/hex.d.ts +5 -0
- package/dist/addressParser/hex.d.ts.map +1 -0
- package/dist/addressParser/hex.js +4 -0
- package/dist/addressParser/hex.js.map +1 -0
- package/dist/addressParser/index.d.ts +20 -0
- package/dist/addressParser/index.d.ts.map +1 -0
- package/dist/addressParser/index.js +4 -0
- package/dist/addressParser/index.js.map +1 -0
- package/dist/addressParser/initia.d.ts +4 -0
- package/dist/addressParser/initia.d.ts.map +1 -0
- package/dist/addressParser/initia.js +4 -0
- package/dist/addressParser/initia.js.map +1 -0
- package/dist/addressParser/solana.d.ts +4 -0
- package/dist/addressParser/solana.d.ts.map +1 -0
- package/dist/addressParser/solana.js +4 -0
- package/dist/addressParser/solana.js.map +1 -0
- package/dist/addressParser/starknet.d.ts +5 -0
- package/dist/addressParser/starknet.d.ts.map +1 -0
- package/dist/addressParser/starknet.js +4 -0
- package/dist/addressParser/starknet.js.map +1 -0
- package/dist/addressParser/stellar.d.ts +4 -0
- package/dist/addressParser/stellar.d.ts.map +1 -0
- package/dist/addressParser/stellar.js +4 -0
- package/dist/addressParser/stellar.js.map +1 -0
- package/dist/addressParser/ton.d.ts +4 -0
- package/dist/addressParser/ton.d.ts.map +1 -0
- package/dist/addressParser/ton.js +4 -0
- package/dist/addressParser/ton.js.map +1 -0
- package/dist/{addressParser.d.ts → addressParser/types.d.ts} +3 -19
- package/dist/addressParser/types.d.ts.map +1 -0
- package/dist/addressParser/types.js +3 -0
- package/dist/addressParser/types.js.map +1 -0
- package/dist/addressParser/utils.d.ts +5 -0
- package/dist/addressParser/utils.d.ts.map +1 -0
- package/dist/addressParser/utils.js +4 -0
- package/dist/addressParser/utils.js.map +1 -0
- package/dist/index.js +2 -5
- package/dist/index.js.map +1 -1
- package/package.json +9 -9
- package/dist/CWKWODSW.js +0 -40
- package/dist/CWKWODSW.js.map +0 -1
- package/dist/PYS2ZW6G.js +0 -1341
- package/dist/PYS2ZW6G.js.map +0 -1
- package/dist/Y7D2L34Q.js.map +0 -1
- package/dist/addressParser.d.ts.map +0 -1
- package/dist/addressParser.js +0 -4
- package/dist/addressParser.js.map +0 -1
- package/dist/addressParser.test.js +0 -18995
- package/dist/addressParser.test.js.map +0 -1
package/dist/DZ5W2GHJ.js
ADDED
|
@@ -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 {
|
|
2
|
-
import {
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
19
|
+
const nativeByteLength = StaticChainConfigs.getAddressSizeInBytes(chainName);
|
|
67
20
|
return {
|
|
68
|
-
//
|
|
69
|
-
nativeAddress:
|
|
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
|
-
|
|
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(
|
|
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
|
-
|
|
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
|
-
|
|
115
|
-
return addressParser(chainName).parseNative(addressToHex(tonAddress));
|
|
116
|
-
}, "tonToNormalized"),
|
|
117
|
-
encoding: "ton"
|
|
75
|
+
encoding: AddressEncoding.HEX
|
|
118
76
|
};
|
|
119
|
-
}, "
|
|
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:
|
|
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:
|
|
292
|
+
encoding: AddressEncoding.BASE58
|
|
246
293
|
};
|
|
247
294
|
}, "base58AddressParser");
|
|
248
|
-
var
|
|
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
|
-
|
|
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
|
-
|
|
266
|
-
|
|
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
|
-
}, "
|
|
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:
|
|
426
|
+
encoding: AddressEncoding.STELLAR
|
|
421
427
|
};
|
|
422
428
|
}, "stellarAddressParser");
|
|
423
|
-
var
|
|
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)
|
|
476
|
-
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
496
|
-
return hexToBytes(address);
|
|
467
|
+
return hexToBytes(addressParser(chainName).nativeToBytes32Hex(nativeAddress));
|
|
497
468
|
}, "nativeToBytes"),
|
|
498
|
-
|
|
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
|
|
504
|
-
}, "
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
if (
|
|
515
|
-
return
|
|
516
|
-
}, "
|
|
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
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
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
|
-
}, "
|
|
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 {
|
|
538
|
-
//# sourceMappingURL=
|
|
539
|
-
//# sourceMappingURL=
|
|
533
|
+
export { addressParser, assertNative, base58AddressParser, cantonAddressParser, getAddress, hexAddressParser, initiaAddressParser, starknetAddressParser, stellarAddressParser, tonAddressParser };
|
|
534
|
+
//# sourceMappingURL=UOJMKUOB.js.map
|
|
535
|
+
//# sourceMappingURL=UOJMKUOB.js.map
|