@agoric/cosmic-proto 0.4.1-upgrade-18-dev-6ddbef0.0 → 0.4.1-upgrade-19-dev-2a71f04.0

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 (167) hide show
  1. package/dist/address-hooks.d.ts +44 -0
  2. package/dist/address-hooks.js +217 -0
  3. package/dist/address-hooks.js.map +1 -0
  4. package/dist/codegen/agoric/bundle.d.ts +173 -162
  5. package/dist/codegen/agoric/swingset/swingset.d.ts +53 -2
  6. package/dist/codegen/agoric/swingset/swingset.js +86 -0
  7. package/dist/codegen/agoric/swingset/swingset.js.map +1 -1
  8. package/dist/codegen/agoric/vbank/vbank.d.ts +7 -0
  9. package/dist/codegen/agoric/vbank/vbank.js +18 -0
  10. package/dist/codegen/agoric/vbank/vbank.js.map +1 -1
  11. package/dist/codegen/circle/bundle.d.ts +1363 -0
  12. package/dist/codegen/circle/bundle.js +40 -0
  13. package/dist/codegen/circle/bundle.js.map +1 -0
  14. package/dist/codegen/circle/cctp/v1/attester.d.ts +31 -0
  15. package/dist/codegen/circle/cctp/v1/attester.js +63 -0
  16. package/dist/codegen/circle/cctp/v1/attester.js.map +1 -0
  17. package/dist/codegen/circle/cctp/v1/burn_message.d.ts +47 -0
  18. package/dist/codegen/circle/cctp/v1/burn_message.js +117 -0
  19. package/dist/codegen/circle/cctp/v1/burn_message.js.map +1 -0
  20. package/dist/codegen/circle/cctp/v1/burning_and_minting_paused.d.ts +31 -0
  21. package/dist/codegen/circle/cctp/v1/burning_and_minting_paused.js +63 -0
  22. package/dist/codegen/circle/cctp/v1/burning_and_minting_paused.js.map +1 -0
  23. package/dist/codegen/circle/cctp/v1/events.d.ts +730 -0
  24. package/dist/codegen/circle/cctp/v1/events.js +1612 -0
  25. package/dist/codegen/circle/cctp/v1/events.js.map +1 -0
  26. package/dist/codegen/circle/cctp/v1/genesis.d.ts +60 -0
  27. package/dist/codegen/circle/cctp/v1/genesis.js +295 -0
  28. package/dist/codegen/circle/cctp/v1/genesis.js.map +1 -0
  29. package/dist/codegen/circle/cctp/v1/max_message_body_size.d.ts +31 -0
  30. package/dist/codegen/circle/cctp/v1/max_message_body_size.js +69 -0
  31. package/dist/codegen/circle/cctp/v1/max_message_body_size.js.map +1 -0
  32. package/dist/codegen/circle/cctp/v1/message.d.ts +69 -0
  33. package/dist/codegen/circle/cctp/v1/message.js +160 -0
  34. package/dist/codegen/circle/cctp/v1/message.js.map +1 -0
  35. package/dist/codegen/circle/cctp/v1/nonce.d.ts +39 -0
  36. package/dist/codegen/circle/cctp/v1/nonce.js +80 -0
  37. package/dist/codegen/circle/cctp/v1/nonce.js.map +1 -0
  38. package/dist/codegen/circle/cctp/v1/per_message_burn_limit.d.ts +39 -0
  39. package/dist/codegen/circle/cctp/v1/per_message_burn_limit.js +73 -0
  40. package/dist/codegen/circle/cctp/v1/per_message_burn_limit.js.map +1 -0
  41. package/dist/codegen/circle/cctp/v1/query.d.ts +1101 -0
  42. package/dist/codegen/circle/cctp/v1/query.js +2421 -0
  43. package/dist/codegen/circle/cctp/v1/query.js.map +1 -0
  44. package/dist/codegen/circle/cctp/v1/remote_token_messenger.d.ts +33 -0
  45. package/dist/codegen/circle/cctp/v1/remote_token_messenger.js +77 -0
  46. package/dist/codegen/circle/cctp/v1/remote_token_messenger.js.map +1 -0
  47. package/dist/codegen/circle/cctp/v1/sending_and_receiving_messages_paused.d.ts +31 -0
  48. package/dist/codegen/circle/cctp/v1/sending_and_receiving_messages_paused.js +63 -0
  49. package/dist/codegen/circle/cctp/v1/sending_and_receiving_messages_paused.js.map +1 -0
  50. package/dist/codegen/circle/cctp/v1/signature_threshold.d.ts +33 -0
  51. package/dist/codegen/circle/cctp/v1/signature_threshold.js +63 -0
  52. package/dist/codegen/circle/cctp/v1/signature_threshold.js.map +1 -0
  53. package/dist/codegen/circle/cctp/v1/token_pair.d.ts +45 -0
  54. package/dist/codegen/circle/cctp/v1/token_pair.js +91 -0
  55. package/dist/codegen/circle/cctp/v1/token_pair.js.map +1 -0
  56. package/dist/codegen/circle/cctp/v1/tx.d.ts +1102 -0
  57. package/dist/codegen/circle/cctp/v1/tx.js +3264 -0
  58. package/dist/codegen/circle/cctp/v1/tx.js.map +1 -0
  59. package/dist/codegen/cosmos/bundle.d.ts +4005 -4005
  60. package/dist/codegen/cosmos/bundle.js +126 -126
  61. package/dist/codegen/cosmos_proto/bundle.d.ts +21 -21
  62. package/dist/codegen/cosmos_proto/bundle.js +2 -2
  63. package/dist/codegen/gogoproto/bundle.js +2 -2
  64. package/dist/codegen/google/bundle.d.ts +277 -277
  65. package/dist/codegen/google/bundle.js +10 -10
  66. package/dist/codegen/google/bundle.js.map +1 -1
  67. package/dist/codegen/ibc/bundle.d.ts +1662 -1662
  68. package/dist/codegen/ibc/bundle.js +64 -64
  69. package/dist/codegen/ibc/bundle.js.map +1 -1
  70. package/dist/codegen/icq/bundle.d.ts +85 -85
  71. package/dist/codegen/icq/bundle.js +10 -10
  72. package/dist/codegen/ics23/bundle.d.ts +113 -113
  73. package/dist/codegen/ics23/bundle.js +2 -2
  74. package/dist/codegen/index.d.ts +2 -0
  75. package/dist/codegen/index.js +2 -0
  76. package/dist/codegen/index.js.map +1 -1
  77. package/dist/codegen/stride/bundle.d.ts +2607 -0
  78. package/dist/codegen/stride/bundle.js +71 -0
  79. package/dist/codegen/stride/bundle.js.map +1 -0
  80. package/dist/codegen/stride/epochs/genesis.d.ts +60 -0
  81. package/dist/codegen/stride/epochs/genesis.js +227 -0
  82. package/dist/codegen/stride/epochs/genesis.js.map +1 -0
  83. package/dist/codegen/stride/epochs/query.d.ts +132 -0
  84. package/dist/codegen/stride/epochs/query.js +398 -0
  85. package/dist/codegen/stride/epochs/query.js.map +1 -0
  86. package/dist/codegen/stride/records/callbacks.d.ts +45 -0
  87. package/dist/codegen/stride/records/callbacks.js +136 -0
  88. package/dist/codegen/stride/records/callbacks.js.map +1 -0
  89. package/dist/codegen/stride/records/genesis.d.ts +41 -0
  90. package/dist/codegen/stride/records/genesis.js +186 -0
  91. package/dist/codegen/stride/records/genesis.js.map +1 -0
  92. package/dist/codegen/stride/records/params.d.ts +23 -0
  93. package/dist/codegen/stride/records/params.js +50 -0
  94. package/dist/codegen/stride/records/params.js.map +1 -0
  95. package/dist/codegen/stride/records/query.d.ts +494 -0
  96. package/dist/codegen/stride/records/query.js +1552 -0
  97. package/dist/codegen/stride/records/query.js.map +1 -0
  98. package/dist/codegen/stride/records/records.d.ts +228 -0
  99. package/dist/codegen/stride/records/records.js +939 -0
  100. package/dist/codegen/stride/records/records.js.map +1 -0
  101. package/dist/codegen/stride/stakedym/genesis.d.ts +92 -0
  102. package/dist/codegen/stride/stakedym/genesis.js +312 -0
  103. package/dist/codegen/stride/stakedym/genesis.js.map +1 -0
  104. package/dist/codegen/stride/stakedym/query.d.ts +302 -0
  105. package/dist/codegen/stride/stakedym/query.js +887 -0
  106. package/dist/codegen/stride/stakedym/query.js.map +1 -0
  107. package/dist/codegen/stride/stakedym/stakedym.d.ts +303 -0
  108. package/dist/codegen/stride/stakedym/stakedym.js +909 -0
  109. package/dist/codegen/stride/stakedym/stakedym.js.map +1 -0
  110. package/dist/codegen/stride/stakedym/tx.d.ts +595 -0
  111. package/dist/codegen/stride/stakedym/tx.js +1661 -0
  112. package/dist/codegen/stride/stakedym/tx.js.map +1 -0
  113. package/dist/codegen/stride/stakeibc/address_unbonding.d.ts +35 -0
  114. package/dist/codegen/stride/stakeibc/address_unbonding.js +135 -0
  115. package/dist/codegen/stride/stakeibc/address_unbonding.js.map +1 -0
  116. package/dist/codegen/stride/stakeibc/callbacks.d.ts +357 -0
  117. package/dist/codegen/stride/stakeibc/callbacks.js +1191 -0
  118. package/dist/codegen/stride/stakeibc/callbacks.js.map +1 -0
  119. package/dist/codegen/stride/stakeibc/epoch_tracker.d.ts +29 -0
  120. package/dist/codegen/stride/stakeibc/epoch_tracker.js +115 -0
  121. package/dist/codegen/stride/stakeibc/epoch_tracker.js.map +1 -0
  122. package/dist/codegen/stride/stakeibc/genesis.d.ts +37 -0
  123. package/dist/codegen/stride/stakeibc/genesis.js +135 -0
  124. package/dist/codegen/stride/stakeibc/genesis.js.map +1 -0
  125. package/dist/codegen/stride/stakeibc/gov.d.ts +61 -0
  126. package/dist/codegen/stride/stakeibc/gov.js +212 -0
  127. package/dist/codegen/stride/stakeibc/gov.js.map +1 -0
  128. package/dist/codegen/stride/stakeibc/host_zone.d.ts +184 -0
  129. package/dist/codegen/stride/stakeibc/host_zone.js +544 -0
  130. package/dist/codegen/stride/stakeibc/host_zone.js.map +1 -0
  131. package/dist/codegen/stride/stakeibc/ica_account.d.ts +43 -0
  132. package/dist/codegen/stride/stakeibc/ica_account.js +165 -0
  133. package/dist/codegen/stride/stakeibc/ica_account.js.map +1 -0
  134. package/dist/codegen/stride/stakeibc/packet.d.ts +42 -0
  135. package/dist/codegen/stride/stakeibc/packet.js +113 -0
  136. package/dist/codegen/stride/stakeibc/packet.js.map +1 -0
  137. package/dist/codegen/stride/stakeibc/params.d.ts +62 -0
  138. package/dist/codegen/stride/stakeibc/params.js +317 -0
  139. package/dist/codegen/stride/stakeibc/params.js.map +1 -0
  140. package/dist/codegen/stride/stakeibc/query.d.ts +492 -0
  141. package/dist/codegen/stride/stakeibc/query.js +1372 -0
  142. package/dist/codegen/stride/stakeibc/query.js.map +1 -0
  143. package/dist/codegen/stride/stakeibc/trade_route.d.ts +170 -0
  144. package/dist/codegen/stride/stakeibc/trade_route.js +377 -0
  145. package/dist/codegen/stride/stakeibc/trade_route.js.map +1 -0
  146. package/dist/codegen/stride/stakeibc/tx.d.ts +1210 -0
  147. package/dist/codegen/stride/stakeibc/tx.js +3392 -0
  148. package/dist/codegen/stride/stakeibc/tx.js.map +1 -0
  149. package/dist/codegen/stride/stakeibc/validator.d.ts +39 -0
  150. package/dist/codegen/stride/stakeibc/validator.js +170 -0
  151. package/dist/codegen/stride/stakeibc/validator.js.map +1 -0
  152. package/dist/codegen/stride/staketia/genesis.d.ts +92 -0
  153. package/dist/codegen/stride/staketia/genesis.js +312 -0
  154. package/dist/codegen/stride/staketia/genesis.js.map +1 -0
  155. package/dist/codegen/stride/staketia/query.d.ts +302 -0
  156. package/dist/codegen/stride/staketia/query.js +887 -0
  157. package/dist/codegen/stride/staketia/query.js.map +1 -0
  158. package/dist/codegen/stride/staketia/staketia.d.ts +285 -0
  159. package/dist/codegen/stride/staketia/staketia.js +819 -0
  160. package/dist/codegen/stride/staketia/staketia.js.map +1 -0
  161. package/dist/codegen/stride/staketia/tx.d.ts +611 -0
  162. package/dist/codegen/stride/staketia/tx.js +1671 -0
  163. package/dist/codegen/stride/staketia/tx.js.map +1 -0
  164. package/dist/codegen/tendermint/bundle.d.ts +716 -716
  165. package/dist/codegen/tendermint/bundle.js +22 -22
  166. package/dist/codegen/varint.d.ts +1 -1
  167. package/package.json +34 -10
@@ -0,0 +1,44 @@
1
+ /**
2
+ * The default maximum number of characters in a bech32-encoded hooked address.
3
+ */
4
+ export const DEFAULT_HOOKED_ADDRESS_CHAR_LIMIT: 1024;
5
+ /**
6
+ * @typedef {Record<string, string | (string | null)[] | null>} HookQuery A
7
+ * record of query keys mapped to query values. `null` values denote valueless
8
+ * keys. Array values denote multiple occurrences of a key:
9
+ *
10
+ * { key: null } // '?key'
11
+ * { key: 'value' } // '?key=value'
12
+ * { key: ['value1', 'value2', 'value3'] } // '?key=value1&key=value2&key=value3'
13
+ * { key: ['value1', null, 'value3'] } // '?key=value1&key&key=value3'
14
+ */
15
+ /**
16
+ * How many bytes are used to store the length of the base address.
17
+ */
18
+ export const BASE_ADDRESS_LENGTH_BYTES: 2;
19
+ export function decodeBech32(specimen: string, charLimit?: number): {
20
+ prefix: string;
21
+ bytes: Uint8Array;
22
+ };
23
+ export function encodeBech32(humanReadablePart: string, bytes: ArrayLike<number>, charLimit?: number): string;
24
+ export function joinHookedAddress(baseAddress: string, hookData: ArrayLike<number>, charLimit?: number): string;
25
+ export function encodeAddressHook(baseAddress: string, query: HookQuery, charLimit?: number): string;
26
+ export function decodeAddressHook(addressHook: string, charLimit?: number): {
27
+ baseAddress: string;
28
+ query: HookQuery;
29
+ };
30
+ export function splitHookedAddress(specimen: string, charLimit?: number): {
31
+ baseAddress: string;
32
+ hookData: Uint8Array;
33
+ };
34
+ /**
35
+ * A
36
+ * record of query keys mapped to query values. `null` values denote valueless
37
+ * keys. Array values denote multiple occurrences of a key:
38
+ *
39
+ * { key: null } // '?key'
40
+ * { key: 'value' } // '?key=value'
41
+ * { key: ['value1', 'value2', 'value3'] } // '?key=value1&key=value2&key=value3'
42
+ * { key: ['value1', null, 'value3'] } // '?key=value1&key&key=value3'
43
+ */
44
+ export type HookQuery = Record<string, string | (string | null)[] | null>;
@@ -0,0 +1,217 @@
1
+ /**
2
+ * This module provides functions for encoding and decoding address hooks
3
+ * which are comprised of a bech32 base address with an HTTP query string, all
4
+ * wrapped in a bech32 envelope.
5
+ *
6
+ * @module address-hooks.js
7
+ * @example
8
+ *
9
+ * import {
10
+ * encodeAddressHook,
11
+ * decodeAddressHook,
12
+ * } from '@agoric/cosmic-proto/address-hooks.js';
13
+ *
14
+ * const baseAddress = 'agoric1qqp0e5ys';
15
+ * const query = { key: 'value', foo: ['bar', 'baz'] };
16
+ *
17
+ * const addressHook = encodeAddressHook(baseAddress, query);
18
+ * // 'agoric10rchqqplvehk70tzv9ezven0du7kyct6ye4k27faweskcat9qqqstnf2eq'
19
+ *
20
+ * addressHook.startsWith('agoric10rch');
21
+ * // true
22
+ *
23
+ * const decoded = decodeAddressHook(addressHook);
24
+ * // {
25
+ * // baseAddress: 'agoric1qqp0e5ys',
26
+ * // query: { foo: [ 'bar', 'baz' ], key: 'value' }
27
+ * // }
28
+ */
29
+ /* eslint-disable no-bitwise */
30
+ import { bech32 } from 'bech32';
31
+ import queryString from 'query-string';
32
+ /* global globalThis */
33
+ /** @type {<T>(x: T) => T} */
34
+ const harden = globalThis.harden || Object.freeze;
35
+ // ADDRESS_HOOK_VERSION is the version of the address hook format used in this
36
+ // module.
37
+ const ADDRESS_HOOK_VERSION = 0;
38
+ if ((ADDRESS_HOOK_VERSION & 0x0f) !== ADDRESS_HOOK_VERSION) {
39
+ throw Error(`ADDRESS_HOOK_VERSION ${ADDRESS_HOOK_VERSION} exceeds 0x0f`);
40
+ }
41
+ // ADDRESS_HOOK_BYTE_PREFIX is a magic prefix that identifies a hooked address.
42
+ // Chosen to make bech32 address hooks that look like "agoric10rch..."
43
+ const ADDRESS_HOOK_BYTE_PREFIX = [
44
+ 0x78,
45
+ 0xf1,
46
+ 0x70, // | ADDRESS_HOOK_VERSION
47
+ ];
48
+ harden(ADDRESS_HOOK_BYTE_PREFIX);
49
+ /**
50
+ * The default maximum number of characters in a bech32-encoded hooked address.
51
+ */
52
+ export const DEFAULT_HOOKED_ADDRESS_CHAR_LIMIT = 1024;
53
+ /**
54
+ * @typedef {Record<string, string | (string | null)[] | null>} HookQuery A
55
+ * record of query keys mapped to query values. `null` values denote valueless
56
+ * keys. Array values denote multiple occurrences of a key:
57
+ *
58
+ * { key: null } // '?key'
59
+ * { key: 'value' } // '?key=value'
60
+ * { key: ['value1', 'value2', 'value3'] } // '?key=value1&key=value2&key=value3'
61
+ * { key: ['value1', null, 'value3'] } // '?key=value1&key&key=value3'
62
+ */
63
+ /**
64
+ * How many bytes are used to store the length of the base address.
65
+ */
66
+ export const BASE_ADDRESS_LENGTH_BYTES = 2;
67
+ /**
68
+ * @param {string} specimen
69
+ * @param {number} [charLimit]
70
+ * @returns {{ prefix: string; bytes: Uint8Array }}
71
+ */
72
+ export const decodeBech32 = (specimen, charLimit = DEFAULT_HOOKED_ADDRESS_CHAR_LIMIT) => {
73
+ const { prefix, words } = bech32.decode(specimen, charLimit);
74
+ const rawBytes = bech32.fromWords(words);
75
+ const bytes = new Uint8Array(rawBytes);
76
+ return harden({ prefix, bytes });
77
+ };
78
+ harden(decodeBech32);
79
+ /**
80
+ * @param {string} humanReadablePart
81
+ * @param {ArrayLike<number>} bytes
82
+ * @param {number} [charLimit]
83
+ * @returns {string}
84
+ */
85
+ export const encodeBech32 = (humanReadablePart, bytes, charLimit = DEFAULT_HOOKED_ADDRESS_CHAR_LIMIT) => {
86
+ const words = bech32.toWords(bytes);
87
+ return bech32.encode(humanReadablePart, words, charLimit);
88
+ };
89
+ harden(encodeBech32);
90
+ /**
91
+ * Join raw base address bytes and hook data into a bech32-encoded hooked
92
+ * address. The bech32-payload is:
93
+ *
94
+ * | offset | 0 | 3 | 3+len(baseAddress) | len(payload)-2 |
95
+ * | ------ | ----- | ----------- | ------------------ | ---------------- |
96
+ * | data | magic | baseAddress | hookData | len(baseAddress) |
97
+ *
98
+ * `magic` is a 3-byte prefix that identifies a hooked address and its version
99
+ * nibble, whose value is 4 bits (between 0 and 0xf (15)). Currently, the only
100
+ * supported version is 0.
101
+ *
102
+ * 0x78, 0xf1, (0x70 | ADDRESS_HOOK_VERSION),
103
+ *
104
+ * This magic prefix encodes as `0rch`, regardless of the version or HRP (e.g.
105
+ * `agoric10rch<rest of payload as bech32><bech32 checksum>`).
106
+ *
107
+ * @param {string} baseAddress
108
+ * @param {ArrayLike<number>} hookData
109
+ * @param {number} [charLimit]
110
+ * @returns {string}
111
+ */
112
+ export const joinHookedAddress = (baseAddress, hookData, charLimit = DEFAULT_HOOKED_ADDRESS_CHAR_LIMIT) => {
113
+ const { prefix, bytes } = decodeBech32(baseAddress, charLimit);
114
+ const baseAddressLength = bytes.length;
115
+ const b = baseAddressLength;
116
+ const hd = hookData.length;
117
+ const maxBaseAddressLength = 2 ** (BASE_ADDRESS_LENGTH_BYTES * 8);
118
+ if (b >= maxBaseAddressLength) {
119
+ throw RangeError(`Base address length 0x${b.toString(16)} exceeds maximum 0x${maxBaseAddressLength.toString(16)}`);
120
+ }
121
+ if (!Number.isSafeInteger(hd) || hd < 0) {
122
+ throw RangeError(`Hook data length ${hd} is not a non-negative integer`);
123
+ }
124
+ const prefixLength = ADDRESS_HOOK_BYTE_PREFIX.length;
125
+ const hookBuf = new Uint8Array(prefixLength + b + hd + BASE_ADDRESS_LENGTH_BYTES);
126
+ hookBuf.set(ADDRESS_HOOK_BYTE_PREFIX, 0);
127
+ hookBuf[prefixLength - 1] |= ADDRESS_HOOK_VERSION;
128
+ hookBuf.set(bytes, prefixLength);
129
+ hookBuf.set(hookData, prefixLength + b);
130
+ // Append the address length bytes, since we've already ensured these do not
131
+ // exceed maxBaseAddressLength above. These are big-endian because the length
132
+ // is at the end of the payload, so if we want to support more bytes for the
133
+ // length, we just need encroach further into the payload. We can do that
134
+ // without changing the meaning of the bytes at the end of existing payloads.
135
+ let len = b;
136
+ for (let i = 0; i < BASE_ADDRESS_LENGTH_BYTES; i += 1) {
137
+ hookBuf[hookBuf.length - 1 - i] = len & 0xff;
138
+ len >>>= 8;
139
+ }
140
+ return encodeBech32(prefix, hookBuf, charLimit);
141
+ };
142
+ harden(joinHookedAddress);
143
+ /**
144
+ * @param {string} baseAddress
145
+ * @param {HookQuery} query
146
+ * @param {number} [charLimit]
147
+ */
148
+ export const encodeAddressHook = (baseAddress, query, charLimit) => {
149
+ const queryStr = queryString.stringify(query);
150
+ const te = new TextEncoder();
151
+ const hookData = te.encode(`?${queryStr}`);
152
+ return joinHookedAddress(baseAddress, hookData, charLimit);
153
+ };
154
+ harden(encodeAddressHook);
155
+ /**
156
+ * @param {string} addressHook
157
+ * @param {number} [charLimit]
158
+ * @returns {{ baseAddress: string; query: HookQuery }}
159
+ * @throws {Error} if no hook string or hook string does not start with `?`
160
+ */
161
+ export const decodeAddressHook = (addressHook, charLimit) => {
162
+ const { baseAddress, hookData } = splitHookedAddress(addressHook, charLimit);
163
+ const hookStr = new TextDecoder().decode(hookData);
164
+ if (hookStr && !hookStr.startsWith('?')) {
165
+ throw Error(`Hook data does not start with '?': ${hookStr}`);
166
+ }
167
+ const parsedQuery = queryString.parse(hookStr);
168
+ /**
169
+ * @type {HookQuery}
170
+ */
171
+ const query = harden({ ...parsedQuery });
172
+ return harden({ baseAddress, query });
173
+ };
174
+ harden(decodeAddressHook);
175
+ /**
176
+ * @param {string} specimen
177
+ * @param {number} [charLimit]
178
+ * @returns {{ baseAddress: string; hookData: Uint8Array }}
179
+ */
180
+ export const splitHookedAddress = (specimen, charLimit = DEFAULT_HOOKED_ADDRESS_CHAR_LIMIT) => {
181
+ const { prefix, bytes } = decodeBech32(specimen, charLimit);
182
+ const prefixLength = ADDRESS_HOOK_BYTE_PREFIX.length;
183
+ let version = 0xff;
184
+ for (let i = 0; i < prefixLength; i += 1) {
185
+ let maybeMagicByte = bytes[i];
186
+ if (i === prefixLength - 1) {
187
+ // Final byte has a low version nibble and a high magic nibble.
188
+ version = maybeMagicByte & 0x0f;
189
+ maybeMagicByte &= 0xf0;
190
+ }
191
+ if (maybeMagicByte !== ADDRESS_HOOK_BYTE_PREFIX[i]) {
192
+ return harden({ baseAddress: specimen, hookData: new Uint8Array() });
193
+ }
194
+ }
195
+ if (version !== ADDRESS_HOOK_VERSION) {
196
+ throw TypeError(`Unsupported address hook version ${version}`);
197
+ }
198
+ let len = 0;
199
+ for (let i = BASE_ADDRESS_LENGTH_BYTES - 1; i >= 0; i -= 1) {
200
+ const byte = bytes.at(-i - 1);
201
+ if (byte === undefined) {
202
+ throw TypeError(`Cannot get base address length from byte ${-i - 1} of ${bytes.length}`);
203
+ }
204
+ len <<= 8;
205
+ len |= byte;
206
+ }
207
+ const b = len;
208
+ if (b > bytes.length - BASE_ADDRESS_LENGTH_BYTES - prefixLength) {
209
+ throw TypeError(`Base address length 0x${b.toString(16)} is longer than specimen length ${bytes.length - BASE_ADDRESS_LENGTH_BYTES - prefixLength}`);
210
+ }
211
+ const baseAddressBuf = bytes.subarray(prefixLength, prefixLength + b);
212
+ const baseAddress = encodeBech32(prefix, baseAddressBuf, charLimit);
213
+ const hookData = bytes.subarray(prefixLength + b, -BASE_ADDRESS_LENGTH_BYTES);
214
+ return harden({ baseAddress, hookData });
215
+ };
216
+ harden(splitHookedAddress);
217
+ //# sourceMappingURL=address-hooks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"address-hooks.js","sourceRoot":"","sources":["../src/address-hooks.js"],"names":[],"mappings":"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"}