@hyperlane-xyz/utils 0.0.0-beta-20251201221151

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 (210) hide show
  1. package/README.md +20 -0
  2. package/dist/addresses.d.ts +65 -0
  3. package/dist/addresses.d.ts.map +1 -0
  4. package/dist/addresses.js +475 -0
  5. package/dist/addresses.js.map +1 -0
  6. package/dist/addresses.test.d.ts +2 -0
  7. package/dist/addresses.test.d.ts.map +1 -0
  8. package/dist/addresses.test.js +68 -0
  9. package/dist/addresses.test.js.map +1 -0
  10. package/dist/amount.d.ts +70 -0
  11. package/dist/amount.d.ts.map +1 -0
  12. package/dist/amount.js +143 -0
  13. package/dist/amount.js.map +1 -0
  14. package/dist/amount.test.d.ts +2 -0
  15. package/dist/amount.test.d.ts.map +1 -0
  16. package/dist/amount.test.js +113 -0
  17. package/dist/amount.test.js.map +1 -0
  18. package/dist/arrays.d.ts +11 -0
  19. package/dist/arrays.d.ts.map +1 -0
  20. package/dist/arrays.js +26 -0
  21. package/dist/arrays.js.map +1 -0
  22. package/dist/arrays.test.d.ts +2 -0
  23. package/dist/arrays.test.d.ts.map +1 -0
  24. package/dist/arrays.test.js +77 -0
  25. package/dist/arrays.test.js.map +1 -0
  26. package/dist/async.d.ts +66 -0
  27. package/dist/async.d.ts.map +1 -0
  28. package/dist/async.js +146 -0
  29. package/dist/async.js.map +1 -0
  30. package/dist/async.test.d.ts +2 -0
  31. package/dist/async.test.d.ts.map +1 -0
  32. package/dist/async.test.js +204 -0
  33. package/dist/async.test.js.map +1 -0
  34. package/dist/base58.d.ts +5 -0
  35. package/dist/base58.d.ts.map +1 -0
  36. package/dist/base58.js +15 -0
  37. package/dist/base58.js.map +1 -0
  38. package/dist/base58.test.d.ts +2 -0
  39. package/dist/base58.test.d.ts.map +1 -0
  40. package/dist/base58.test.js +31 -0
  41. package/dist/base58.test.js.map +1 -0
  42. package/dist/base64.d.ts +3 -0
  43. package/dist/base64.d.ts.map +1 -0
  44. package/dist/base64.js +25 -0
  45. package/dist/base64.js.map +1 -0
  46. package/dist/base64.test.d.ts +2 -0
  47. package/dist/base64.test.d.ts.map +1 -0
  48. package/dist/base64.test.js +54 -0
  49. package/dist/base64.test.js.map +1 -0
  50. package/dist/big-numbers.d.ts +50 -0
  51. package/dist/big-numbers.d.ts.map +1 -0
  52. package/dist/big-numbers.js +80 -0
  53. package/dist/big-numbers.js.map +1 -0
  54. package/dist/big-numbers.test.d.ts +2 -0
  55. package/dist/big-numbers.test.d.ts.map +1 -0
  56. package/dist/big-numbers.test.js +96 -0
  57. package/dist/big-numbers.test.js.map +1 -0
  58. package/dist/calldata.d.ts +3 -0
  59. package/dist/calldata.d.ts.map +1 -0
  60. package/dist/calldata.js +4 -0
  61. package/dist/calldata.js.map +1 -0
  62. package/dist/checkpoints.d.ts +6 -0
  63. package/dist/checkpoints.d.ts.map +1 -0
  64. package/dist/checkpoints.js +24 -0
  65. package/dist/checkpoints.js.map +1 -0
  66. package/dist/checkpoints.test.d.ts +2 -0
  67. package/dist/checkpoints.test.d.ts.map +1 -0
  68. package/dist/checkpoints.test.js +105 -0
  69. package/dist/checkpoints.test.js.map +1 -0
  70. package/dist/config.d.ts +25 -0
  71. package/dist/config.d.ts.map +1 -0
  72. package/dist/config.js +84 -0
  73. package/dist/config.js.map +1 -0
  74. package/dist/domains.d.ts +2 -0
  75. package/dist/domains.d.ts.map +1 -0
  76. package/dist/domains.js +6 -0
  77. package/dist/domains.js.map +1 -0
  78. package/dist/env.d.ts +4 -0
  79. package/dist/env.d.ts.map +1 -0
  80. package/dist/env.js +17 -0
  81. package/dist/env.js.map +1 -0
  82. package/dist/env.test.d.ts +2 -0
  83. package/dist/env.test.d.ts.map +1 -0
  84. package/dist/env.test.js +16 -0
  85. package/dist/env.test.js.map +1 -0
  86. package/dist/eslint-rules/index.d.ts +157 -0
  87. package/dist/eslint-rules/index.d.ts.map +1 -0
  88. package/dist/eslint-rules/index.js +58 -0
  89. package/dist/eslint-rules/index.js.map +1 -0
  90. package/dist/eslint-rules/no-restricted-imports-from-exports.d.ts +4 -0
  91. package/dist/eslint-rules/no-restricted-imports-from-exports.d.ts.map +1 -0
  92. package/dist/eslint-rules/no-restricted-imports-from-exports.js +141 -0
  93. package/dist/eslint-rules/no-restricted-imports-from-exports.js.map +1 -0
  94. package/dist/eslint-rules/no-restricted-imports-from-exports.test.d.ts +2 -0
  95. package/dist/eslint-rules/no-restricted-imports-from-exports.test.d.ts.map +1 -0
  96. package/dist/eslint-rules/no-restricted-imports-from-exports.test.js +258 -0
  97. package/dist/eslint-rules/no-restricted-imports-from-exports.test.js.map +1 -0
  98. package/dist/eslint-rules/sort-yaml-arrays.d.ts +39 -0
  99. package/dist/eslint-rules/sort-yaml-arrays.d.ts.map +1 -0
  100. package/dist/eslint-rules/sort-yaml-arrays.js +74 -0
  101. package/dist/eslint-rules/sort-yaml-arrays.js.map +1 -0
  102. package/dist/eslint-rules/sort-yaml-arrays.test.d.ts +2 -0
  103. package/dist/eslint-rules/sort-yaml-arrays.test.d.ts.map +1 -0
  104. package/dist/eslint-rules/sort-yaml-arrays.test.js +621 -0
  105. package/dist/eslint-rules/sort-yaml-arrays.test.js.map +1 -0
  106. package/dist/ids.d.ts +20 -0
  107. package/dist/ids.d.ts.map +1 -0
  108. package/dist/ids.js +42 -0
  109. package/dist/ids.js.map +1 -0
  110. package/dist/ids.test.d.ts +2 -0
  111. package/dist/ids.test.d.ts.map +1 -0
  112. package/dist/ids.test.js +39 -0
  113. package/dist/ids.test.js.map +1 -0
  114. package/dist/index.d.ts +30 -0
  115. package/dist/index.d.ts.map +1 -0
  116. package/dist/index.js +29 -0
  117. package/dist/index.js.map +1 -0
  118. package/dist/logging.d.ts +32 -0
  119. package/dist/logging.d.ts.map +1 -0
  120. package/dist/logging.js +146 -0
  121. package/dist/logging.js.map +1 -0
  122. package/dist/logging.test.d.ts +2 -0
  123. package/dist/logging.test.d.ts.map +1 -0
  124. package/dist/logging.test.js +35 -0
  125. package/dist/logging.test.js.map +1 -0
  126. package/dist/math.d.ts +6 -0
  127. package/dist/math.d.ts.map +1 -0
  128. package/dist/math.js +21 -0
  129. package/dist/math.js.map +1 -0
  130. package/dist/math.test.d.ts +2 -0
  131. package/dist/math.test.d.ts.map +1 -0
  132. package/dist/math.test.js +45 -0
  133. package/dist/math.test.js.map +1 -0
  134. package/dist/messages.d.ts +22 -0
  135. package/dist/messages.d.ts.map +1 -0
  136. package/dist/messages.js +64 -0
  137. package/dist/messages.js.map +1 -0
  138. package/dist/multisig.d.ts +4 -0
  139. package/dist/multisig.d.ts.map +1 -0
  140. package/dist/multisig.js +53 -0
  141. package/dist/multisig.js.map +1 -0
  142. package/dist/objects.d.ts +74 -0
  143. package/dist/objects.d.ts.map +1 -0
  144. package/dist/objects.js +331 -0
  145. package/dist/objects.js.map +1 -0
  146. package/dist/objects.test.d.ts +2 -0
  147. package/dist/objects.test.d.ts.map +1 -0
  148. package/dist/objects.test.js +655 -0
  149. package/dist/objects.test.js.map +1 -0
  150. package/dist/result.d.ts +11 -0
  151. package/dist/result.d.ts.map +1 -0
  152. package/dist/result.js +7 -0
  153. package/dist/result.js.map +1 -0
  154. package/dist/sets.d.ts +5 -0
  155. package/dist/sets.d.ts.map +1 -0
  156. package/dist/sets.js +33 -0
  157. package/dist/sets.js.map +1 -0
  158. package/dist/sets.test.d.ts +2 -0
  159. package/dist/sets.test.d.ts.map +1 -0
  160. package/dist/sets.test.js +35 -0
  161. package/dist/sets.test.js.map +1 -0
  162. package/dist/strings.d.ts +11 -0
  163. package/dist/strings.d.ts.map +1 -0
  164. package/dist/strings.js +49 -0
  165. package/dist/strings.js.map +1 -0
  166. package/dist/strings.test.d.ts +2 -0
  167. package/dist/strings.test.d.ts.map +1 -0
  168. package/dist/strings.test.js +42 -0
  169. package/dist/strings.test.js.map +1 -0
  170. package/dist/typeof.d.ts +3 -0
  171. package/dist/typeof.d.ts.map +1 -0
  172. package/dist/typeof.js +7 -0
  173. package/dist/typeof.js.map +1 -0
  174. package/dist/typeof.test.d.ts +2 -0
  175. package/dist/typeof.test.d.ts.map +1 -0
  176. package/dist/typeof.test.js +34 -0
  177. package/dist/typeof.test.js.map +1 -0
  178. package/dist/types.d.ts +111 -0
  179. package/dist/types.d.ts.map +1 -0
  180. package/dist/types.js +23 -0
  181. package/dist/types.js.map +1 -0
  182. package/dist/url.d.ts +4 -0
  183. package/dist/url.d.ts.map +1 -0
  184. package/dist/url.js +34 -0
  185. package/dist/url.js.map +1 -0
  186. package/dist/url.test.d.ts +2 -0
  187. package/dist/url.test.d.ts.map +1 -0
  188. package/dist/url.test.js +29 -0
  189. package/dist/url.test.js.map +1 -0
  190. package/dist/validation.d.ts +2 -0
  191. package/dist/validation.d.ts.map +1 -0
  192. package/dist/validation.js +6 -0
  193. package/dist/validation.js.map +1 -0
  194. package/dist/validation.test.d.ts +2 -0
  195. package/dist/validation.test.d.ts.map +1 -0
  196. package/dist/validation.test.js +11 -0
  197. package/dist/validation.test.js.map +1 -0
  198. package/dist/validator.d.ts +30 -0
  199. package/dist/validator.d.ts.map +1 -0
  200. package/dist/validator.js +76 -0
  201. package/dist/validator.js.map +1 -0
  202. package/dist/yaml.d.ts +22 -0
  203. package/dist/yaml.d.ts.map +1 -0
  204. package/dist/yaml.js +293 -0
  205. package/dist/yaml.js.map +1 -0
  206. package/dist/yaml.test.d.ts +2 -0
  207. package/dist/yaml.test.d.ts.map +1 -0
  208. package/dist/yaml.test.js +519 -0
  209. package/dist/yaml.test.js.map +1 -0
  210. package/package.json +80 -0
package/README.md ADDED
@@ -0,0 +1,20 @@
1
+ # Hyperlane Utils
2
+
3
+ A collection of various utilities and types for building applications with Hyperlane.
4
+ Typically not used directly but through the [Hyperlane SDK](https://www.npmjs.com/package/@hyperlane-xyz/sdk) instead.
5
+
6
+ ## Install
7
+
8
+ ```bash
9
+ # Install with NPM
10
+ npm install @hyperlane-xyz/utils
11
+
12
+ # Or with Yarn
13
+ yarn add @hyperlane-xyz/utils
14
+ ```
15
+
16
+ Note, this package uses [ESM Modules](https://gist.github.com/sindresorhus/a39789f98801d908bbc7ff3ecc99d99c#pure-esm-package)
17
+
18
+ ## License
19
+
20
+ Apache 2.0
@@ -0,0 +1,65 @@
1
+ /// <reference types="node" resolution-mode="require"/>
2
+ import { Address, HexString, ProtocolType } from './types.js';
3
+ export declare const ZERO_ADDRESS_HEX_32 = "0x0000000000000000000000000000000000000000000000000000000000000000";
4
+ export declare function isAddressEvm(address: Address): boolean;
5
+ export declare function isAddressSealevel(address: Address): boolean;
6
+ export declare function isAddressCosmos(address: Address): boolean;
7
+ export declare function isAddressCosmosNative(address: Address): boolean;
8
+ export declare function isCosmosIbcDenomAddress(address: Address): boolean;
9
+ export declare function isAddressStarknet(address: Address): boolean;
10
+ export declare function isAddressRadix(address: Address): boolean;
11
+ export declare function getAddressProtocolType(address: Address): ProtocolType | undefined;
12
+ export declare function isAddress(address: Address): boolean;
13
+ export declare function isValidAddressEvm(address: Address): boolean;
14
+ export declare function isValidAddressSealevel(address: Address): boolean;
15
+ export declare function isValidAddressCosmos(address: Address): boolean;
16
+ export declare function isValidAddressStarknet(address: Address): boolean;
17
+ export declare function isValidAddressRadix(address: Address): boolean;
18
+ export declare function isValidAddress(address: Address, protocol?: ProtocolType): boolean;
19
+ export declare function normalizeAddressEvm(address: Address): string;
20
+ export declare function normalizeAddressSealevel(address: Address): string;
21
+ export declare function normalizeAddressCosmos(address: Address): string;
22
+ export declare function normalizeAddressStarknet(address: Address): string;
23
+ export declare function normalizeAddressRadix(address: Address): string;
24
+ export declare function normalizeAddress(address: Address, protocol?: ProtocolType): string;
25
+ export declare function eqAddressEvm(a1: Address, a2: Address): boolean;
26
+ export declare function eqAddressSol(a1: Address, a2: Address): boolean;
27
+ export declare function eqAddressCosmos(a1: Address, a2: Address): boolean;
28
+ export declare function eqAddressStarknet(a1: Address, a2: Address): boolean;
29
+ export declare function eqAddressRadix(a1: Address, a2: Address): boolean;
30
+ export declare function eqAddress(a1: Address, a2: Address): boolean;
31
+ export declare function isValidTransactionHashEvm(input: string): boolean;
32
+ export declare function isValidTransactionHashSealevel(input: string): boolean;
33
+ export declare function isValidTransactionHashCosmos(input: string): boolean;
34
+ export declare function isValidTransactionHashStarknet(input: string): boolean;
35
+ export declare function isValidTransactionHashRadix(input: string): boolean;
36
+ export declare function isValidTransactionHash(input: string, protocol: ProtocolType): boolean;
37
+ export declare function isZeroishAddress(address: Address): boolean;
38
+ export declare function shortenAddress(address: Address, capitalize?: boolean): string;
39
+ export declare function capitalizeAddress(address: Address): string;
40
+ export declare function addressToBytes32Evm(address: Address): string;
41
+ export declare function bytes32ToAddress(bytes32: HexString): Address;
42
+ export declare function addressToBytesEvm(address: Address): Uint8Array;
43
+ export declare function addressToBytesSol(address: Address): Uint8Array;
44
+ export declare function addressToBytesCosmos(address: Address): Uint8Array;
45
+ export declare function addressToBytesCosmosNative(address: Address): Uint8Array;
46
+ export declare function addressToBytesStarknet(address: Address): Uint8Array;
47
+ export declare function addressToBytesRadix(address: Address): Uint8Array;
48
+ export declare function addressToBytes(address: Address, protocol?: ProtocolType): Uint8Array;
49
+ export declare function addressToByteHexString(address: string, protocol?: ProtocolType): string;
50
+ export declare function addressToBytes32(address: Address, protocol?: ProtocolType): string;
51
+ export declare function bytesToBytes32(bytes: Uint8Array): string;
52
+ export declare function padBytesToLength(bytes: Uint8Array, length: number): Buffer;
53
+ export declare function bytesToAddressEvm(bytes: Uint8Array): Address;
54
+ export declare function bytesToAddressSol(bytes: Uint8Array): Address;
55
+ export declare function bytesToAddressCosmos(bytes: Uint8Array, prefix: string): Address;
56
+ export declare function bytesToAddressCosmosNative(bytes: Uint8Array, prefix: string): Address;
57
+ export declare function bytesToAddressStarknet(bytes: Uint8Array): Address;
58
+ export declare function bytesToAddressRadix(bytes: Uint8Array, prefix: string): Address;
59
+ export declare function bytesToProtocolAddress(bytes: Uint8Array, toProtocol: ProtocolType, prefix?: string): string;
60
+ export declare function convertToProtocolAddress(address: string, protocol: ProtocolType, prefix?: string): string;
61
+ export declare function ensure0x(hexstr: string): string;
62
+ export declare function strip0x(hexstr: string): string;
63
+ export declare function isPrivateKeyEvm(privateKey: string): boolean;
64
+ export declare function hexToRadixCustomPrefix(hex: string, module: string, prefix?: string, length?: number): string;
65
+ //# sourceMappingURL=addresses.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"addresses.d.ts","sourceRoot":"","sources":["../src/addresses.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,475 @@
1
+ import { fromBech32, normalizeBech32, toBech32 } from '@cosmjs/encoding';
2
+ import { PublicKey } from '@solana/web3.js';
3
+ import { bech32m } from 'bech32';
4
+ import { Wallet, utils as ethersUtils } from 'ethers';
5
+ import { addAddressPadding, encode, num, validateAndParseAddress, } from 'starknet';
6
+ import { isNullish } from './typeof.js';
7
+ import { ProtocolType } from './types.js';
8
+ import { assert } from './validation.js';
9
+ const EVM_ADDRESS_REGEX = /^0x[a-fA-F0-9]{40}$/;
10
+ const SEALEVEL_ADDRESS_REGEX = /^[a-zA-Z0-9]{36,44}$/;
11
+ const COSMOS_NATIVE_ADDRESS_REGEX = /^(0x)?[0-9a-fA-F]{64}$/;
12
+ const STARKNET_ADDRESS_REGEX = /^(0x)?[0-9a-fA-F]{64}$/;
13
+ const RADIX_ADDRESS_REGEX = /^(account|component)_(rdx|loc|sim|tdx_[\d]_)[a-z0-9]{55}$/;
14
+ const HEX_BYTES32_REGEX = /^0x[a-fA-F0-9]{64}$/;
15
+ // https://github.com/cosmos/cosmos-sdk/blob/84c33215658131d87daf3c629e909e12ed9370fa/types/coin.go#L601C17-L601C44
16
+ const COSMOS_DENOM_PATTERN = `[a-zA-Z][a-zA-Z0-9]{2,127}`;
17
+ // https://en.bitcoin.it/wiki/BIP_0173
18
+ const BECH32_ADDRESS_PATTERN = `[a-zA-Z]{1,83}1[qpzry9x8gf2tvdw0s3jn54khce6mua7l]{38,58}`;
19
+ const COSMOS_ADDRESS_REGEX = new RegExp(`^${BECH32_ADDRESS_PATTERN}$`);
20
+ const IBC_DENOM_REGEX = new RegExp(`^ibc/([A-Fa-f0-9]{64})$`);
21
+ const COSMOS_FACTORY_TOKEN_REGEX = new RegExp(`^factory/(${BECH32_ADDRESS_PATTERN})/${COSMOS_DENOM_PATTERN}$`);
22
+ const EVM_TX_HASH_REGEX = /^0x([A-Fa-f0-9]{64})$/;
23
+ const SEALEVEL_TX_HASH_REGEX = /^[a-zA-Z1-9]{88}$/;
24
+ const COSMOS_TX_HASH_REGEX = /^(0x)?[A-Fa-f0-9]{64}$/;
25
+ const STARKNET_TX_HASH_REGEX = /^(0x)?[0-9a-fA-F]{64}$/;
26
+ const RADIX_TX_HASH_REGEX = /^txid_(rdx|sim|tdx_[\d]_)[a-z0-9]{59}$/;
27
+ const EVM_ZEROISH_ADDRESS_REGEX = /^(0x)?0*$/;
28
+ const SEALEVEL_ZEROISH_ADDRESS_REGEX = /^1+$/;
29
+ const COSMOS_ZEROISH_ADDRESS_REGEX = /^[a-z]{1,10}?1[0]+$/;
30
+ const COSMOS_NATIVE_ZEROISH_ADDRESS_REGEX = /^(0x)?0*$/;
31
+ const STARKNET_ZEROISH_ADDRESS_REGEX = /^(0x)?0*$/;
32
+ const RADIX_ZEROISH_ADDRESS_REGEX = /^0*$/;
33
+ export const ZERO_ADDRESS_HEX_32 = '0x0000000000000000000000000000000000000000000000000000000000000000';
34
+ export function isAddressEvm(address) {
35
+ return EVM_ADDRESS_REGEX.test(address);
36
+ }
37
+ export function isAddressSealevel(address) {
38
+ return SEALEVEL_ADDRESS_REGEX.test(address);
39
+ }
40
+ export function isAddressCosmos(address) {
41
+ return (COSMOS_ADDRESS_REGEX.test(address) ||
42
+ IBC_DENOM_REGEX.test(address) ||
43
+ COSMOS_FACTORY_TOKEN_REGEX.test(address));
44
+ }
45
+ export function isAddressCosmosNative(address) {
46
+ return COSMOS_NATIVE_ADDRESS_REGEX.test(address);
47
+ }
48
+ export function isCosmosIbcDenomAddress(address) {
49
+ return IBC_DENOM_REGEX.test(address);
50
+ }
51
+ export function isAddressStarknet(address) {
52
+ return STARKNET_ADDRESS_REGEX.test(address);
53
+ }
54
+ export function isAddressRadix(address) {
55
+ return RADIX_ADDRESS_REGEX.test(address);
56
+ }
57
+ export function getAddressProtocolType(address) {
58
+ if (!address)
59
+ return undefined;
60
+ if (isAddressEvm(address)) {
61
+ return ProtocolType.Ethereum;
62
+ }
63
+ else if (isAddressCosmos(address)) {
64
+ return ProtocolType.Cosmos;
65
+ }
66
+ else if (isAddressCosmosNative(address)) {
67
+ return ProtocolType.CosmosNative;
68
+ }
69
+ else if (isAddressSealevel(address)) {
70
+ return ProtocolType.Sealevel;
71
+ }
72
+ else if (isAddressStarknet(address)) {
73
+ return ProtocolType.Starknet;
74
+ }
75
+ else if (isAddressRadix(address)) {
76
+ return ProtocolType.Radix;
77
+ }
78
+ else {
79
+ return undefined;
80
+ }
81
+ }
82
+ export function isAddress(address) {
83
+ return !!getAddressProtocolType(address);
84
+ }
85
+ function routeAddressUtil(fns, param, fallback, protocol) {
86
+ protocol ||= getAddressProtocolType(param);
87
+ if (protocol && fns[protocol])
88
+ return fns[protocol](param);
89
+ else if (!isNullish(fallback))
90
+ return fallback;
91
+ else
92
+ throw new Error(`Unsupported protocol ${protocol}`);
93
+ }
94
+ // Slower than isAddressEvm above but actually validates content and checksum
95
+ export function isValidAddressEvm(address) {
96
+ // Need to catch because ethers' isAddress throws in some cases (bad checksum)
97
+ try {
98
+ const isValid = address && ethersUtils.isAddress(address);
99
+ return !!isValid;
100
+ }
101
+ catch {
102
+ return false;
103
+ }
104
+ }
105
+ // Slower than isAddressSealevel above but actually validates content and checksum
106
+ export function isValidAddressSealevel(address) {
107
+ try {
108
+ const isValid = address && new PublicKey(address).toBase58();
109
+ return !!isValid;
110
+ }
111
+ catch {
112
+ return false;
113
+ }
114
+ }
115
+ // Slower than isAddressCosmos above but actually validates content and checksum
116
+ export function isValidAddressCosmos(address) {
117
+ try {
118
+ const isValid = address &&
119
+ (IBC_DENOM_REGEX.test(address) ||
120
+ COSMOS_FACTORY_TOKEN_REGEX.test(address) ||
121
+ fromBech32(address));
122
+ return !!isValid;
123
+ }
124
+ catch {
125
+ return false;
126
+ }
127
+ }
128
+ export function isValidAddressStarknet(address) {
129
+ try {
130
+ const isValid = address && validateAndParseAddress(address);
131
+ return !!isValid;
132
+ }
133
+ catch {
134
+ return false;
135
+ }
136
+ }
137
+ export function isValidAddressRadix(address) {
138
+ try {
139
+ const isValid = address && RADIX_ADDRESS_REGEX.test(address);
140
+ return !!isValid;
141
+ }
142
+ catch {
143
+ return false;
144
+ }
145
+ }
146
+ export function isValidAddress(address, protocol) {
147
+ return routeAddressUtil({
148
+ [ProtocolType.Ethereum]: isValidAddressEvm,
149
+ [ProtocolType.Sealevel]: isValidAddressSealevel,
150
+ [ProtocolType.Cosmos]: isValidAddressCosmos,
151
+ [ProtocolType.CosmosNative]: isValidAddressCosmos,
152
+ [ProtocolType.Starknet]: isValidAddressStarknet,
153
+ [ProtocolType.Radix]: isValidAddressRadix,
154
+ }, address, false, protocol);
155
+ }
156
+ export function normalizeAddressEvm(address) {
157
+ if (isZeroishAddress(address))
158
+ return address;
159
+ try {
160
+ return ethersUtils.getAddress(address);
161
+ }
162
+ catch {
163
+ return address;
164
+ }
165
+ }
166
+ export function normalizeAddressSealevel(address) {
167
+ if (isZeroishAddress(address))
168
+ return address;
169
+ try {
170
+ return new PublicKey(address).toBase58();
171
+ }
172
+ catch {
173
+ return address;
174
+ }
175
+ }
176
+ export function normalizeAddressCosmos(address) {
177
+ if (isZeroishAddress(address))
178
+ return address;
179
+ try {
180
+ return normalizeBech32(address);
181
+ }
182
+ catch {
183
+ return address;
184
+ }
185
+ }
186
+ export function normalizeAddressStarknet(address) {
187
+ if (isZeroishAddress(address))
188
+ return address;
189
+ try {
190
+ return validateAndParseAddress(address);
191
+ }
192
+ catch {
193
+ return address;
194
+ }
195
+ }
196
+ export function normalizeAddressRadix(address) {
197
+ return address;
198
+ }
199
+ export function normalizeAddress(address, protocol) {
200
+ return routeAddressUtil({
201
+ [ProtocolType.Ethereum]: normalizeAddressEvm,
202
+ [ProtocolType.Sealevel]: normalizeAddressSealevel,
203
+ [ProtocolType.Cosmos]: normalizeAddressCosmos,
204
+ [ProtocolType.CosmosNative]: normalizeAddressCosmos,
205
+ [ProtocolType.Starknet]: normalizeAddressStarknet,
206
+ [ProtocolType.Radix]: normalizeAddressRadix,
207
+ }, address, address, protocol);
208
+ }
209
+ export function eqAddressEvm(a1, a2) {
210
+ return normalizeAddressEvm(a1) === normalizeAddressEvm(a2);
211
+ }
212
+ export function eqAddressSol(a1, a2) {
213
+ return normalizeAddressSealevel(a1) === normalizeAddressSealevel(a2);
214
+ }
215
+ export function eqAddressCosmos(a1, a2) {
216
+ return normalizeAddressCosmos(a1) === normalizeAddressCosmos(a2);
217
+ }
218
+ export function eqAddressStarknet(a1, a2) {
219
+ return normalizeAddressStarknet(a1) === normalizeAddressStarknet(a2);
220
+ }
221
+ export function eqAddressRadix(a1, a2) {
222
+ return normalizeAddressRadix(a1) === normalizeAddressRadix(a2);
223
+ }
224
+ export function eqAddress(a1, a2) {
225
+ const p1 = getAddressProtocolType(a1);
226
+ const p2 = getAddressProtocolType(a2);
227
+ if (p1 !== p2)
228
+ return false;
229
+ return routeAddressUtil({
230
+ [ProtocolType.Ethereum]: (_a1) => eqAddressEvm(_a1, a2),
231
+ [ProtocolType.Sealevel]: (_a1) => eqAddressSol(_a1, a2),
232
+ [ProtocolType.Cosmos]: (_a1) => eqAddressCosmos(_a1, a2),
233
+ [ProtocolType.CosmosNative]: (_a1) => eqAddressCosmos(_a1, a2),
234
+ [ProtocolType.Starknet]: (_a1) => eqAddressStarknet(_a1, a2),
235
+ [ProtocolType.Radix]: (_a1) => eqAddressRadix(_a1, a2),
236
+ }, a1, false, p1);
237
+ }
238
+ export function isValidTransactionHashEvm(input) {
239
+ return EVM_TX_HASH_REGEX.test(input);
240
+ }
241
+ export function isValidTransactionHashSealevel(input) {
242
+ return SEALEVEL_TX_HASH_REGEX.test(input);
243
+ }
244
+ export function isValidTransactionHashCosmos(input) {
245
+ return COSMOS_TX_HASH_REGEX.test(input);
246
+ }
247
+ export function isValidTransactionHashStarknet(input) {
248
+ return STARKNET_TX_HASH_REGEX.test(input);
249
+ }
250
+ export function isValidTransactionHashRadix(input) {
251
+ return RADIX_TX_HASH_REGEX.test(input);
252
+ }
253
+ export function isValidTransactionHash(input, protocol) {
254
+ if (protocol === ProtocolType.Ethereum) {
255
+ return isValidTransactionHashEvm(input);
256
+ }
257
+ else if (protocol === ProtocolType.Sealevel) {
258
+ return isValidTransactionHashSealevel(input);
259
+ }
260
+ else if (protocol === ProtocolType.Cosmos) {
261
+ return isValidTransactionHashCosmos(input);
262
+ }
263
+ else if (protocol === ProtocolType.CosmosNative) {
264
+ return isValidTransactionHashCosmos(input);
265
+ }
266
+ else if (protocol === ProtocolType.Starknet) {
267
+ return isValidTransactionHashStarknet(input);
268
+ }
269
+ else if (protocol === ProtocolType.Radix) {
270
+ return isValidTransactionHashRadix(input);
271
+ }
272
+ else {
273
+ return false;
274
+ }
275
+ }
276
+ export function isZeroishAddress(address) {
277
+ return (EVM_ZEROISH_ADDRESS_REGEX.test(address) ||
278
+ SEALEVEL_ZEROISH_ADDRESS_REGEX.test(address) ||
279
+ COSMOS_ZEROISH_ADDRESS_REGEX.test(address) ||
280
+ COSMOS_NATIVE_ZEROISH_ADDRESS_REGEX.test(address) ||
281
+ STARKNET_ZEROISH_ADDRESS_REGEX.test(address) ||
282
+ RADIX_ZEROISH_ADDRESS_REGEX.test(address));
283
+ }
284
+ export function shortenAddress(address, capitalize) {
285
+ if (!address)
286
+ return '';
287
+ if (address.length < 8)
288
+ return address;
289
+ const normalized = normalizeAddress(address);
290
+ const shortened = normalized.substring(0, 5) +
291
+ '...' +
292
+ normalized.substring(normalized.length - 4);
293
+ return capitalize ? capitalizeAddress(shortened) : shortened;
294
+ }
295
+ export function capitalizeAddress(address) {
296
+ if (address.startsWith('0x'))
297
+ return '0x' + address.substring(2).toUpperCase();
298
+ else
299
+ return address.toUpperCase();
300
+ }
301
+ export function addressToBytes32Evm(address) {
302
+ return ethersUtils
303
+ .hexZeroPad(ethersUtils.hexStripZeros(address), 32)
304
+ .toLowerCase();
305
+ }
306
+ // For EVM addresses only, kept for backwards compatibility and convenience
307
+ export function bytes32ToAddress(bytes32) {
308
+ return ethersUtils.getAddress(bytes32.slice(-40));
309
+ }
310
+ export function addressToBytesEvm(address) {
311
+ const addrBytes32 = addressToBytes32Evm(address);
312
+ return Buffer.from(strip0x(addrBytes32), 'hex');
313
+ }
314
+ export function addressToBytesSol(address) {
315
+ return new PublicKey(address).toBytes();
316
+ }
317
+ export function addressToBytesCosmos(address) {
318
+ return fromBech32(address).data;
319
+ }
320
+ export function addressToBytesCosmosNative(address) {
321
+ return Buffer.from(strip0x(address), 'hex');
322
+ }
323
+ export function addressToBytesStarknet(address) {
324
+ const normalizedAddress = normalizeAddressStarknet(address);
325
+ return num.hexToBytes(normalizedAddress);
326
+ }
327
+ export function addressToBytesRadix(address) {
328
+ let byteArray = new Uint8Array(bech32m.fromWords(bech32m.decode(address).words));
329
+ // Ensure the byte array is 32 bytes long, padding from the left if necessary
330
+ if (byteArray.length < 32) {
331
+ const paddedArray = new Uint8Array(32);
332
+ paddedArray.set(byteArray, 32 - byteArray.length);
333
+ byteArray = paddedArray;
334
+ }
335
+ return byteArray;
336
+ }
337
+ export function addressToBytes(address, protocol) {
338
+ const bytes = routeAddressUtil({
339
+ [ProtocolType.Ethereum]: addressToBytesEvm,
340
+ [ProtocolType.Sealevel]: addressToBytesSol,
341
+ [ProtocolType.Cosmos]: addressToBytesCosmos,
342
+ [ProtocolType.CosmosNative]: addressToBytesCosmosNative,
343
+ [ProtocolType.Starknet]: addressToBytesStarknet,
344
+ [ProtocolType.Radix]: addressToBytesRadix,
345
+ }, address, new Uint8Array(), protocol);
346
+ assert(bytes.length && !bytes.every((b) => b == 0), 'address bytes must not be empty');
347
+ return bytes;
348
+ }
349
+ export function addressToByteHexString(address, protocol) {
350
+ return ensure0x(Buffer.from(addressToBytes(address, protocol)).toString('hex'));
351
+ }
352
+ export function addressToBytes32(address, protocol) {
353
+ // If the address is already bytes32, just return, avoiding a regression
354
+ // where an already bytes32 address cannot be categorized as a protocol address.
355
+ if (HEX_BYTES32_REGEX.test(ensure0x(address)))
356
+ return ensure0x(address);
357
+ const bytes = addressToBytes(address, protocol);
358
+ return bytesToBytes32(bytes);
359
+ }
360
+ export function bytesToBytes32(bytes) {
361
+ if (bytes.length > 32) {
362
+ throw new Error('bytes must be 32 bytes or less');
363
+ }
364
+ // This 0x-prefixes the hex string
365
+ return ethersUtils.hexZeroPad(ensure0x(Buffer.from(bytes).toString('hex')), 32);
366
+ }
367
+ // Pad bytes to a certain length, padding with 0s at the start
368
+ export function padBytesToLength(bytes, length) {
369
+ if (bytes.length > length) {
370
+ throw new Error(`bytes must be ${length} bytes or less`);
371
+ }
372
+ return Buffer.concat([Buffer.alloc(length - bytes.length), bytes]);
373
+ }
374
+ export function bytesToAddressEvm(bytes) {
375
+ return bytes32ToAddress(Buffer.from(bytes).toString('hex'));
376
+ }
377
+ export function bytesToAddressSol(bytes) {
378
+ return new PublicKey(bytes).toBase58();
379
+ }
380
+ export function bytesToAddressCosmos(bytes, prefix) {
381
+ if (!prefix)
382
+ throw new Error('Prefix required for Cosmos address');
383
+ return toBech32(prefix, bytes);
384
+ }
385
+ export function bytesToAddressCosmosNative(bytes, prefix) {
386
+ if (!prefix)
387
+ throw new Error('Prefix required for Cosmos Native address');
388
+ // if the bytes are of length 32 we have to check if the bytes are a cosmos
389
+ // native account address or an ID from the hyperlane cosmos module. A cosmos
390
+ // native account address is padded with 12 bytes in front.
391
+ if (bytes.length === 32) {
392
+ if (bytes.slice(0, 12).every((b) => !b)) {
393
+ // since the first 12 bytes are empty we know it is an account address
394
+ return toBech32(prefix, bytes.slice(12));
395
+ }
396
+ // else it is an ID from the hyperlane cosmos module and we just need
397
+ // to represent the bytes in hex
398
+ return ensure0x(Buffer.from(bytes).toString('hex'));
399
+ }
400
+ return toBech32(prefix, bytes);
401
+ }
402
+ export function bytesToAddressStarknet(bytes) {
403
+ const hexString = encode.buf2hex(bytes);
404
+ return addAddressPadding(hexString);
405
+ }
406
+ export function bytesToAddressRadix(bytes, prefix) {
407
+ if (!prefix)
408
+ throw new Error('Prefix required for Radix address');
409
+ // If the bytes array is larger than or equal to 30 bytes, take the last 30 bytes
410
+ // Otherwise, pad with zeros from the left up to 30 bytes
411
+ if (bytes.length >= 30) {
412
+ bytes = bytes.slice(bytes.length - 30);
413
+ }
414
+ else {
415
+ const paddedBytes = new Uint8Array(30);
416
+ paddedBytes.set(bytes, 30 - bytes.length);
417
+ bytes = paddedBytes;
418
+ }
419
+ return bech32m.encode(prefix, bech32m.toWords(bytes));
420
+ }
421
+ export function bytesToProtocolAddress(bytes, toProtocol, prefix) {
422
+ assert(bytes.length && !bytes.every((b) => b == 0), 'address bytes must not be empty');
423
+ if (toProtocol === ProtocolType.Ethereum) {
424
+ return bytesToAddressEvm(bytes);
425
+ }
426
+ else if (toProtocol === ProtocolType.Sealevel) {
427
+ return bytesToAddressSol(bytes);
428
+ }
429
+ else if (toProtocol === ProtocolType.Cosmos) {
430
+ return bytesToAddressCosmos(bytes, prefix);
431
+ }
432
+ else if (toProtocol === ProtocolType.CosmosNative) {
433
+ return bytesToAddressCosmosNative(bytes, prefix);
434
+ }
435
+ else if (toProtocol === ProtocolType.Starknet) {
436
+ return bytesToAddressStarknet(bytes);
437
+ }
438
+ else if (toProtocol === ProtocolType.Radix) {
439
+ return bytesToAddressRadix(bytes, prefix);
440
+ }
441
+ else {
442
+ throw new Error(`Unsupported protocol for address ${toProtocol}`);
443
+ }
444
+ }
445
+ export function convertToProtocolAddress(address, protocol, prefix) {
446
+ const currentProtocol = getAddressProtocolType(address);
447
+ if (!currentProtocol)
448
+ throw new Error(`Unknown address protocol for ${address}`);
449
+ if (currentProtocol === protocol)
450
+ return address;
451
+ const addressBytes = addressToBytes(address, currentProtocol);
452
+ return bytesToProtocolAddress(addressBytes, protocol, prefix);
453
+ }
454
+ export function ensure0x(hexstr) {
455
+ return hexstr.startsWith('0x') ? hexstr : `0x${hexstr}`;
456
+ }
457
+ export function strip0x(hexstr) {
458
+ return hexstr.startsWith('0x') ? hexstr.slice(2) : hexstr;
459
+ }
460
+ export function isPrivateKeyEvm(privateKey) {
461
+ try {
462
+ return new Wallet(privateKey).privateKey === privateKey;
463
+ }
464
+ catch {
465
+ throw new Error('Provided Private Key is not EVM compatible!');
466
+ }
467
+ }
468
+ export function hexToRadixCustomPrefix(hex, module, prefix, length = 32) {
469
+ let bytes = addressToBytes(hex);
470
+ bytes = bytes.slice(bytes.length - length);
471
+ prefix = prefix || 'account_rdx';
472
+ prefix = prefix.replace('account', module);
473
+ return bech32m.encode(prefix, bech32m.toWords(bytes));
474
+ }
475
+ //# sourceMappingURL=addresses.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"addresses.js","sourceRoot":"","sources":["../src/addresses.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=addresses.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"addresses.test.d.ts","sourceRoot":"","sources":["../src/addresses.test.ts"],"names":[],"mappings":""}