@hashgraphonline/standards-sdk 0.0.90 → 0.0.92

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 (213) hide show
  1. package/dist/es/hcs-10/browser.d.ts.map +1 -1
  2. package/dist/es/hcs-10/connections-manager.d.ts.map +1 -1
  3. package/dist/es/hcs-10/types.d.ts +19 -48
  4. package/dist/es/hcs-10/types.d.ts.map +1 -1
  5. package/dist/es/standards-sdk.es10.js +12 -3
  6. package/dist/es/standards-sdk.es10.js.map +1 -1
  7. package/dist/es/standards-sdk.es100.js +13 -32
  8. package/dist/es/standards-sdk.es100.js.map +1 -1
  9. package/dist/es/standards-sdk.es101.js +30 -13
  10. package/dist/es/standards-sdk.es101.js.map +1 -1
  11. package/dist/es/standards-sdk.es102.js +14 -3
  12. package/dist/es/standards-sdk.es102.js.map +1 -1
  13. package/dist/es/standards-sdk.es103.js +3 -3
  14. package/dist/es/standards-sdk.es103.js.map +1 -1
  15. package/dist/es/standards-sdk.es104.js +3 -15
  16. package/dist/es/standards-sdk.es104.js.map +1 -1
  17. package/dist/es/standards-sdk.es105.js +15 -4
  18. package/dist/es/standards-sdk.es105.js.map +1 -1
  19. package/dist/es/standards-sdk.es106.js +5 -39
  20. package/dist/es/standards-sdk.es106.js.map +1 -1
  21. package/dist/es/standards-sdk.es107.js +38 -39
  22. package/dist/es/standards-sdk.es107.js.map +1 -1
  23. package/dist/es/standards-sdk.es108.js +37 -34
  24. package/dist/es/standards-sdk.es108.js.map +1 -1
  25. package/dist/es/standards-sdk.es109.js +34 -75
  26. package/dist/es/standards-sdk.es109.js.map +1 -1
  27. package/dist/es/standards-sdk.es110.js +78 -3
  28. package/dist/es/standards-sdk.es110.js.map +1 -1
  29. package/dist/es/standards-sdk.es111.js +3 -2
  30. package/dist/es/standards-sdk.es111.js.map +1 -1
  31. package/dist/es/standards-sdk.es112.js +2 -2
  32. package/dist/es/standards-sdk.es112.js.map +1 -1
  33. package/dist/es/standards-sdk.es113.js +2 -34
  34. package/dist/es/standards-sdk.es113.js.map +1 -1
  35. package/dist/es/standards-sdk.es114.js +30 -29
  36. package/dist/es/standards-sdk.es114.js.map +1 -1
  37. package/dist/es/standards-sdk.es115.js +33 -9
  38. package/dist/es/standards-sdk.es115.js.map +1 -1
  39. package/dist/es/standards-sdk.es116.js +9 -34
  40. package/dist/es/standards-sdk.es116.js.map +1 -1
  41. package/dist/es/standards-sdk.es117.js +34 -4
  42. package/dist/es/standards-sdk.es117.js.map +1 -1
  43. package/dist/es/standards-sdk.es13.js +2 -2
  44. package/dist/es/standards-sdk.es15.js +1 -1
  45. package/dist/es/standards-sdk.es18.js +2 -2
  46. package/dist/es/standards-sdk.es19.js +3 -3
  47. package/dist/es/standards-sdk.es22.js +5 -1767
  48. package/dist/es/standards-sdk.es22.js.map +1 -1
  49. package/dist/es/standards-sdk.es23.js +1767 -36
  50. package/dist/es/standards-sdk.es23.js.map +1 -1
  51. package/dist/es/standards-sdk.es24.js +7163 -21
  52. package/dist/es/standards-sdk.es24.js.map +1 -1
  53. package/dist/es/standards-sdk.es25.js +941 -7090
  54. package/dist/es/standards-sdk.es25.js.map +1 -1
  55. package/dist/es/standards-sdk.es26.js +36 -3
  56. package/dist/es/standards-sdk.es26.js.map +1 -1
  57. package/dist/es/standards-sdk.es27.js +48 -2
  58. package/dist/es/standards-sdk.es27.js.map +1 -1
  59. package/dist/es/standards-sdk.es28.js +3 -1041
  60. package/dist/es/standards-sdk.es28.js.map +1 -1
  61. package/dist/es/standards-sdk.es29.js +2 -5
  62. package/dist/es/standards-sdk.es29.js.map +1 -1
  63. package/dist/es/standards-sdk.es31.js +379 -7096
  64. package/dist/es/standards-sdk.es31.js.map +1 -1
  65. package/dist/es/standards-sdk.es32.js +2 -3
  66. package/dist/es/standards-sdk.es32.js.map +1 -1
  67. package/dist/es/standards-sdk.es33.js +120 -2
  68. package/dist/es/standards-sdk.es33.js.map +1 -1
  69. package/dist/es/standards-sdk.es34.js +3 -194
  70. package/dist/es/standards-sdk.es34.js.map +1 -1
  71. package/dist/es/standards-sdk.es35.js +7090 -392
  72. package/dist/es/standards-sdk.es35.js.map +1 -1
  73. package/dist/es/standards-sdk.es36.js +2 -25
  74. package/dist/es/standards-sdk.es36.js.map +1 -1
  75. package/dist/es/standards-sdk.es37.js +3 -139
  76. package/dist/es/standards-sdk.es37.js.map +1 -1
  77. package/dist/es/standards-sdk.es38.js +79 -13
  78. package/dist/es/standards-sdk.es38.js.map +1 -1
  79. package/dist/es/standards-sdk.es39.js +21 -27
  80. package/dist/es/standards-sdk.es39.js.map +1 -1
  81. package/dist/es/standards-sdk.es4.js +1 -1
  82. package/dist/es/standards-sdk.es40.js +144 -25
  83. package/dist/es/standards-sdk.es40.js.map +1 -1
  84. package/dist/es/standards-sdk.es41.js +87 -17
  85. package/dist/es/standards-sdk.es41.js.map +1 -1
  86. package/dist/es/standards-sdk.es42.js +359 -39
  87. package/dist/es/standards-sdk.es42.js.map +1 -1
  88. package/dist/es/standards-sdk.es43.js +5 -17
  89. package/dist/es/standards-sdk.es43.js.map +1 -1
  90. package/dist/es/standards-sdk.es44.js +168 -50
  91. package/dist/es/standards-sdk.es44.js.map +1 -1
  92. package/dist/es/standards-sdk.es45.js +79 -1287
  93. package/dist/es/standards-sdk.es45.js.map +1 -1
  94. package/dist/es/standards-sdk.es46.js +102 -136
  95. package/dist/es/standards-sdk.es46.js.map +1 -1
  96. package/dist/es/standards-sdk.es47.js +46 -85
  97. package/dist/es/standards-sdk.es47.js.map +1 -1
  98. package/dist/es/standards-sdk.es48.js +10 -84
  99. package/dist/es/standards-sdk.es48.js.map +1 -1
  100. package/dist/es/standards-sdk.es49.js +91 -26
  101. package/dist/es/standards-sdk.es49.js.map +1 -1
  102. package/dist/es/standards-sdk.es5.js +3 -3
  103. package/dist/es/standards-sdk.es50.js +3 -5
  104. package/dist/es/standards-sdk.es50.js.map +1 -1
  105. package/dist/es/standards-sdk.es51.js +2 -159
  106. package/dist/es/standards-sdk.es51.js.map +1 -1
  107. package/dist/es/standards-sdk.es52.js +111 -21
  108. package/dist/es/standards-sdk.es52.js.map +1 -1
  109. package/dist/es/standards-sdk.es53.js +71 -790
  110. package/dist/es/standards-sdk.es53.js.map +1 -1
  111. package/dist/es/standards-sdk.es54.js +4 -362
  112. package/dist/es/standards-sdk.es54.js.map +1 -1
  113. package/dist/es/standards-sdk.es55.js +4 -5
  114. package/dist/es/standards-sdk.es55.js.map +1 -1
  115. package/dist/es/standards-sdk.es56.js +200 -158
  116. package/dist/es/standards-sdk.es56.js.map +1 -1
  117. package/dist/es/standards-sdk.es57.js +54 -77
  118. package/dist/es/standards-sdk.es57.js.map +1 -1
  119. package/dist/es/standards-sdk.es58.js +67 -112
  120. package/dist/es/standards-sdk.es58.js.map +1 -1
  121. package/dist/es/standards-sdk.es59.js +190 -47
  122. package/dist/es/standards-sdk.es59.js.map +1 -1
  123. package/dist/es/standards-sdk.es60.js +438 -10
  124. package/dist/es/standards-sdk.es60.js.map +1 -1
  125. package/dist/es/standards-sdk.es61.js +19 -91
  126. package/dist/es/standards-sdk.es61.js.map +1 -1
  127. package/dist/es/standards-sdk.es62.js +138 -3
  128. package/dist/es/standards-sdk.es62.js.map +1 -1
  129. package/dist/es/standards-sdk.es63.js +18 -2
  130. package/dist/es/standards-sdk.es63.js.map +1 -1
  131. package/dist/es/standards-sdk.es64.js +22 -106
  132. package/dist/es/standards-sdk.es64.js.map +1 -1
  133. package/dist/es/standards-sdk.es65.js +26 -71
  134. package/dist/es/standards-sdk.es65.js.map +1 -1
  135. package/dist/es/standards-sdk.es66.js +20 -5
  136. package/dist/es/standards-sdk.es66.js.map +1 -1
  137. package/dist/es/standards-sdk.es67.js +43 -4
  138. package/dist/es/standards-sdk.es67.js.map +1 -1
  139. package/dist/es/standards-sdk.es68.js +13 -216
  140. package/dist/es/standards-sdk.es68.js.map +1 -1
  141. package/dist/es/standards-sdk.es69.js +57 -54
  142. package/dist/es/standards-sdk.es69.js.map +1 -1
  143. package/dist/es/standards-sdk.es7.js +3 -3
  144. package/dist/es/standards-sdk.es70.js +1287 -67
  145. package/dist/es/standards-sdk.es70.js.map +1 -1
  146. package/dist/es/standards-sdk.es71.js +28 -97
  147. package/dist/es/standards-sdk.es71.js.map +1 -1
  148. package/dist/es/standards-sdk.es72.js +6 -2
  149. package/dist/es/standards-sdk.es72.js.map +1 -1
  150. package/dist/es/standards-sdk.es73.js +158 -15
  151. package/dist/es/standards-sdk.es73.js.map +1 -1
  152. package/dist/es/standards-sdk.es74.js +786 -402
  153. package/dist/es/standards-sdk.es74.js.map +1 -1
  154. package/dist/es/standards-sdk.es75.js +94 -167
  155. package/dist/es/standards-sdk.es75.js.map +1 -1
  156. package/dist/es/standards-sdk.es76.js +2 -143
  157. package/dist/es/standards-sdk.es76.js.map +1 -1
  158. package/dist/es/standards-sdk.es77.js +16 -2282
  159. package/dist/es/standards-sdk.es77.js.map +1 -1
  160. package/dist/es/standards-sdk.es78.js +400 -155
  161. package/dist/es/standards-sdk.es78.js.map +1 -1
  162. package/dist/es/standards-sdk.es79.js +169 -16
  163. package/dist/es/standards-sdk.es79.js.map +1 -1
  164. package/dist/es/standards-sdk.es8.js +3 -3
  165. package/dist/es/standards-sdk.es8.js.map +1 -1
  166. package/dist/es/standards-sdk.es80.js +136 -25
  167. package/dist/es/standards-sdk.es80.js.map +1 -1
  168. package/dist/es/standards-sdk.es81.js +2282 -63
  169. package/dist/es/standards-sdk.es81.js.map +1 -1
  170. package/dist/es/standards-sdk.es82.js +161 -47
  171. package/dist/es/standards-sdk.es82.js.map +1 -1
  172. package/dist/es/standards-sdk.es83.js +31 -9
  173. package/dist/es/standards-sdk.es83.js.map +1 -1
  174. package/dist/es/standards-sdk.es84.js +56 -58
  175. package/dist/es/standards-sdk.es84.js.map +1 -1
  176. package/dist/es/standards-sdk.es85.js +50 -6
  177. package/dist/es/standards-sdk.es85.js.map +1 -1
  178. package/dist/es/standards-sdk.es86.js +9 -14
  179. package/dist/es/standards-sdk.es86.js.map +1 -1
  180. package/dist/es/standards-sdk.es87.js +64 -6
  181. package/dist/es/standards-sdk.es87.js.map +1 -1
  182. package/dist/es/standards-sdk.es88.js +5 -44
  183. package/dist/es/standards-sdk.es88.js.map +1 -1
  184. package/dist/es/standards-sdk.es89.js +15 -2
  185. package/dist/es/standards-sdk.es89.js.map +1 -1
  186. package/dist/es/standards-sdk.es9.js +1 -1
  187. package/dist/es/standards-sdk.es90.js +6 -135
  188. package/dist/es/standards-sdk.es90.js.map +1 -1
  189. package/dist/es/standards-sdk.es91.js +42 -169
  190. package/dist/es/standards-sdk.es91.js.map +1 -1
  191. package/dist/es/standards-sdk.es92.js +2 -27
  192. package/dist/es/standards-sdk.es92.js.map +1 -1
  193. package/dist/es/standards-sdk.es93.js +136 -26
  194. package/dist/es/standards-sdk.es93.js.map +1 -1
  195. package/dist/es/standards-sdk.es94.js +172 -38
  196. package/dist/es/standards-sdk.es94.js.map +1 -1
  197. package/dist/es/standards-sdk.es95.js +16 -414
  198. package/dist/es/standards-sdk.es95.js.map +1 -1
  199. package/dist/es/standards-sdk.es96.js +27 -2
  200. package/dist/es/standards-sdk.es96.js.map +1 -1
  201. package/dist/es/standards-sdk.es97.js +24 -118
  202. package/dist/es/standards-sdk.es97.js.map +1 -1
  203. package/dist/es/standards-sdk.es98.js +38 -13
  204. package/dist/es/standards-sdk.es98.js.map +1 -1
  205. package/dist/es/standards-sdk.es99.js +13 -13
  206. package/dist/es/standards-sdk.es99.js.map +1 -1
  207. package/dist/umd/hcs-10/browser.d.ts.map +1 -1
  208. package/dist/umd/hcs-10/connections-manager.d.ts.map +1 -1
  209. package/dist/umd/hcs-10/types.d.ts +19 -48
  210. package/dist/umd/hcs-10/types.d.ts.map +1 -1
  211. package/dist/umd/standards-sdk.umd.js +1 -1
  212. package/dist/umd/standards-sdk.umd.js.map +1 -1
  213. package/package.json +1 -1
@@ -1,24 +1,177 @@
1
- var __defProp = Object.defineProperty;
2
- var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
3
- var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
4
- import { Coder } from "./standards-sdk.es35.js";
5
- class AnonymousCoder extends Coder {
6
- constructor(coder) {
7
- super(coder.name, coder.type, "_", coder.dynamic);
8
- __publicField(this, "coder");
9
- this.coder = coder;
1
+ import { number, exists, bytes, output } from "./standards-sdk.es96.js";
2
+ import { rotlSH, rotlSL, rotlBH, rotlBL, split } from "./standards-sdk.es97.js";
3
+ import { wrapConstructor, Hash, u32, toBytes } from "./standards-sdk.es98.js";
4
+ const [SHA3_PI, SHA3_ROTL, _SHA3_IOTA] = [[], [], []];
5
+ const _0n = /* @__PURE__ */ BigInt(0);
6
+ const _1n = /* @__PURE__ */ BigInt(1);
7
+ const _2n = /* @__PURE__ */ BigInt(2);
8
+ const _7n = /* @__PURE__ */ BigInt(7);
9
+ const _256n = /* @__PURE__ */ BigInt(256);
10
+ const _0x71n = /* @__PURE__ */ BigInt(113);
11
+ for (let round = 0, R = _1n, x = 1, y = 0; round < 24; round++) {
12
+ [x, y] = [y, (2 * x + 3 * y) % 5];
13
+ SHA3_PI.push(2 * (5 * y + x));
14
+ SHA3_ROTL.push((round + 1) * (round + 2) / 2 % 64);
15
+ let t = _0n;
16
+ for (let j = 0; j < 7; j++) {
17
+ R = (R << _1n ^ (R >> _7n) * _0x71n) % _256n;
18
+ if (R & _2n)
19
+ t ^= _1n << (_1n << /* @__PURE__ */ BigInt(j)) - _1n;
10
20
  }
11
- defaultValue() {
12
- return this.coder.defaultValue();
21
+ _SHA3_IOTA.push(t);
22
+ }
23
+ const [SHA3_IOTA_H, SHA3_IOTA_L] = /* @__PURE__ */ split(_SHA3_IOTA, true);
24
+ const rotlH = (h, l, s) => s > 32 ? rotlBH(h, l, s) : rotlSH(h, l, s);
25
+ const rotlL = (h, l, s) => s > 32 ? rotlBL(h, l, s) : rotlSL(h, l, s);
26
+ function keccakP(s, rounds = 24) {
27
+ const B = new Uint32Array(5 * 2);
28
+ for (let round = 24 - rounds; round < 24; round++) {
29
+ for (let x = 0; x < 10; x++)
30
+ B[x] = s[x] ^ s[x + 10] ^ s[x + 20] ^ s[x + 30] ^ s[x + 40];
31
+ for (let x = 0; x < 10; x += 2) {
32
+ const idx1 = (x + 8) % 10;
33
+ const idx0 = (x + 2) % 10;
34
+ const B0 = B[idx0];
35
+ const B1 = B[idx0 + 1];
36
+ const Th = rotlH(B0, B1, 1) ^ B[idx1];
37
+ const Tl = rotlL(B0, B1, 1) ^ B[idx1 + 1];
38
+ for (let y = 0; y < 50; y += 10) {
39
+ s[x + y] ^= Th;
40
+ s[x + y + 1] ^= Tl;
41
+ }
42
+ }
43
+ let curH = s[2];
44
+ let curL = s[3];
45
+ for (let t = 0; t < 24; t++) {
46
+ const shift = SHA3_ROTL[t];
47
+ const Th = rotlH(curH, curL, shift);
48
+ const Tl = rotlL(curH, curL, shift);
49
+ const PI = SHA3_PI[t];
50
+ curH = s[PI];
51
+ curL = s[PI + 1];
52
+ s[PI] = Th;
53
+ s[PI + 1] = Tl;
54
+ }
55
+ for (let y = 0; y < 50; y += 10) {
56
+ for (let x = 0; x < 10; x++)
57
+ B[x] = s[y + x];
58
+ for (let x = 0; x < 10; x++)
59
+ s[y + x] ^= ~B[(x + 2) % 10] & B[(x + 4) % 10];
60
+ }
61
+ s[0] ^= SHA3_IOTA_H[round];
62
+ s[1] ^= SHA3_IOTA_L[round];
63
+ }
64
+ B.fill(0);
65
+ }
66
+ class Keccak extends Hash {
67
+ // NOTE: we accept arguments in bytes instead of bits here.
68
+ constructor(blockLen, suffix, outputLen, enableXOF = false, rounds = 24) {
69
+ super();
70
+ this.blockLen = blockLen;
71
+ this.suffix = suffix;
72
+ this.outputLen = outputLen;
73
+ this.enableXOF = enableXOF;
74
+ this.rounds = rounds;
75
+ this.pos = 0;
76
+ this.posOut = 0;
77
+ this.finished = false;
78
+ this.destroyed = false;
79
+ number(outputLen);
80
+ if (0 >= this.blockLen || this.blockLen >= 200)
81
+ throw new Error("Sha3 supports only keccak-f1600 function");
82
+ this.state = new Uint8Array(200);
83
+ this.state32 = u32(this.state);
84
+ }
85
+ keccak() {
86
+ keccakP(this.state32, this.rounds);
87
+ this.posOut = 0;
88
+ this.pos = 0;
89
+ }
90
+ update(data) {
91
+ exists(this);
92
+ const { blockLen, state } = this;
93
+ data = toBytes(data);
94
+ const len = data.length;
95
+ for (let pos = 0; pos < len; ) {
96
+ const take = Math.min(blockLen - this.pos, len - pos);
97
+ for (let i = 0; i < take; i++)
98
+ state[this.pos++] ^= data[pos++];
99
+ if (this.pos === blockLen)
100
+ this.keccak();
101
+ }
102
+ return this;
103
+ }
104
+ finish() {
105
+ if (this.finished)
106
+ return;
107
+ this.finished = true;
108
+ const { state, suffix, pos, blockLen } = this;
109
+ state[pos] ^= suffix;
110
+ if ((suffix & 128) !== 0 && pos === blockLen - 1)
111
+ this.keccak();
112
+ state[blockLen - 1] ^= 128;
113
+ this.keccak();
114
+ }
115
+ writeInto(out) {
116
+ exists(this, false);
117
+ bytes(out);
118
+ this.finish();
119
+ const bufferOut = this.state;
120
+ const { blockLen } = this;
121
+ for (let pos = 0, len = out.length; pos < len; ) {
122
+ if (this.posOut >= blockLen)
123
+ this.keccak();
124
+ const take = Math.min(blockLen - this.posOut, len - pos);
125
+ out.set(bufferOut.subarray(this.posOut, this.posOut + take), pos);
126
+ this.posOut += take;
127
+ pos += take;
128
+ }
129
+ return out;
130
+ }
131
+ xofInto(out) {
132
+ if (!this.enableXOF)
133
+ throw new Error("XOF is not possible for this instance");
134
+ return this.writeInto(out);
135
+ }
136
+ xof(bytes2) {
137
+ number(bytes2);
138
+ return this.xofInto(new Uint8Array(bytes2));
139
+ }
140
+ digestInto(out) {
141
+ output(out, this);
142
+ if (this.finished)
143
+ throw new Error("digest() was already called");
144
+ this.writeInto(out);
145
+ this.destroy();
146
+ return out;
147
+ }
148
+ digest() {
149
+ return this.digestInto(new Uint8Array(this.outputLen));
13
150
  }
14
- encode(writer, value) {
15
- return this.coder.encode(writer, value);
151
+ destroy() {
152
+ this.destroyed = true;
153
+ this.state.fill(0);
16
154
  }
17
- decode(reader) {
18
- return this.coder.decode(reader);
155
+ _cloneInto(to) {
156
+ const { blockLen, suffix, outputLen, rounds, enableXOF } = this;
157
+ to || (to = new Keccak(blockLen, suffix, outputLen, enableXOF, rounds));
158
+ to.state32.set(this.state32);
159
+ to.pos = this.pos;
160
+ to.posOut = this.posOut;
161
+ to.finished = this.finished;
162
+ to.rounds = rounds;
163
+ to.suffix = suffix;
164
+ to.outputLen = outputLen;
165
+ to.enableXOF = enableXOF;
166
+ to.destroyed = this.destroyed;
167
+ return to;
19
168
  }
20
169
  }
170
+ const gen = (suffix, blockLen, outputLen) => wrapConstructor(() => new Keccak(blockLen, suffix, outputLen));
171
+ const keccak_256 = /* @__PURE__ */ gen(1, 136, 256 / 8);
21
172
  export {
22
- AnonymousCoder
173
+ Keccak,
174
+ keccakP,
175
+ keccak_256
23
176
  };
24
177
  //# sourceMappingURL=standards-sdk.es79.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"standards-sdk.es79.js","sources":["../../node_modules/ethers/lib.esm/abi/coders/anonymous.js"],"sourcesContent":["import { Coder } from \"./abstract-coder.js\";\n/**\n * Clones the functionality of an existing Coder, but without a localName\n *\n * @_ignore\n */\nexport class AnonymousCoder extends Coder {\n coder;\n constructor(coder) {\n super(coder.name, coder.type, \"_\", coder.dynamic);\n this.coder = coder;\n }\n defaultValue() {\n return this.coder.defaultValue();\n }\n encode(writer, value) {\n return this.coder.encode(writer, value);\n }\n decode(reader) {\n return this.coder.decode(reader);\n }\n}\n//# sourceMappingURL=anonymous.js.map"],"names":[],"mappings":";;;;AAMO,MAAM,uBAAuB,MAAM;AAAA,EAEtC,YAAY,OAAO;AACf,UAAM,MAAM,MAAM,MAAM,MAAM,KAAK,MAAM,OAAO;AAFpD;AAGI,SAAK,QAAQ;AAAA,EACrB;AAAA,EACI,eAAe;AACX,WAAO,KAAK,MAAM,aAAc;AAAA,EACxC;AAAA,EACI,OAAO,QAAQ,OAAO;AAClB,WAAO,KAAK,MAAM,OAAO,QAAQ,KAAK;AAAA,EAC9C;AAAA,EACI,OAAO,QAAQ;AACX,WAAO,KAAK,MAAM,OAAO,MAAM;AAAA,EACvC;AACA;","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"standards-sdk.es79.js","sources":["../../node_modules/@noble/hashes/esm/sha3.js"],"sourcesContent":["import { bytes, exists, number, output } from './_assert.js';\nimport { rotlBH, rotlBL, rotlSH, rotlSL, split } from './_u64.js';\nimport { Hash, u32, toBytes, wrapConstructor, wrapXOFConstructorWithOpts, } from './utils.js';\n// SHA3 (keccak) is based on a new design: basically, the internal state is bigger than output size.\n// It's called a sponge function.\n// Various per round constants calculations\nconst [SHA3_PI, SHA3_ROTL, _SHA3_IOTA] = [[], [], []];\nconst _0n = /* @__PURE__ */ BigInt(0);\nconst _1n = /* @__PURE__ */ BigInt(1);\nconst _2n = /* @__PURE__ */ BigInt(2);\nconst _7n = /* @__PURE__ */ BigInt(7);\nconst _256n = /* @__PURE__ */ BigInt(256);\nconst _0x71n = /* @__PURE__ */ BigInt(0x71);\nfor (let round = 0, R = _1n, x = 1, y = 0; round < 24; round++) {\n // Pi\n [x, y] = [y, (2 * x + 3 * y) % 5];\n SHA3_PI.push(2 * (5 * y + x));\n // Rotational\n SHA3_ROTL.push((((round + 1) * (round + 2)) / 2) % 64);\n // Iota\n let t = _0n;\n for (let j = 0; j < 7; j++) {\n R = ((R << _1n) ^ ((R >> _7n) * _0x71n)) % _256n;\n if (R & _2n)\n t ^= _1n << ((_1n << /* @__PURE__ */ BigInt(j)) - _1n);\n }\n _SHA3_IOTA.push(t);\n}\nconst [SHA3_IOTA_H, SHA3_IOTA_L] = /* @__PURE__ */ split(_SHA3_IOTA, true);\n// Left rotation (without 0, 32, 64)\nconst rotlH = (h, l, s) => (s > 32 ? rotlBH(h, l, s) : rotlSH(h, l, s));\nconst rotlL = (h, l, s) => (s > 32 ? rotlBL(h, l, s) : rotlSL(h, l, s));\n// Same as keccakf1600, but allows to skip some rounds\nexport function keccakP(s, rounds = 24) {\n const B = new Uint32Array(5 * 2);\n // NOTE: all indices are x2 since we store state as u32 instead of u64 (bigints to slow in js)\n for (let round = 24 - rounds; round < 24; round++) {\n // Theta θ\n for (let x = 0; x < 10; x++)\n B[x] = s[x] ^ s[x + 10] ^ s[x + 20] ^ s[x + 30] ^ s[x + 40];\n for (let x = 0; x < 10; x += 2) {\n const idx1 = (x + 8) % 10;\n const idx0 = (x + 2) % 10;\n const B0 = B[idx0];\n const B1 = B[idx0 + 1];\n const Th = rotlH(B0, B1, 1) ^ B[idx1];\n const Tl = rotlL(B0, B1, 1) ^ B[idx1 + 1];\n for (let y = 0; y < 50; y += 10) {\n s[x + y] ^= Th;\n s[x + y + 1] ^= Tl;\n }\n }\n // Rho (ρ) and Pi (π)\n let curH = s[2];\n let curL = s[3];\n for (let t = 0; t < 24; t++) {\n const shift = SHA3_ROTL[t];\n const Th = rotlH(curH, curL, shift);\n const Tl = rotlL(curH, curL, shift);\n const PI = SHA3_PI[t];\n curH = s[PI];\n curL = s[PI + 1];\n s[PI] = Th;\n s[PI + 1] = Tl;\n }\n // Chi (χ)\n for (let y = 0; y < 50; y += 10) {\n for (let x = 0; x < 10; x++)\n B[x] = s[y + x];\n for (let x = 0; x < 10; x++)\n s[y + x] ^= ~B[(x + 2) % 10] & B[(x + 4) % 10];\n }\n // Iota (ι)\n s[0] ^= SHA3_IOTA_H[round];\n s[1] ^= SHA3_IOTA_L[round];\n }\n B.fill(0);\n}\nexport class Keccak extends Hash {\n // NOTE: we accept arguments in bytes instead of bits here.\n constructor(blockLen, suffix, outputLen, enableXOF = false, rounds = 24) {\n super();\n this.blockLen = blockLen;\n this.suffix = suffix;\n this.outputLen = outputLen;\n this.enableXOF = enableXOF;\n this.rounds = rounds;\n this.pos = 0;\n this.posOut = 0;\n this.finished = false;\n this.destroyed = false;\n // Can be passed from user as dkLen\n number(outputLen);\n // 1600 = 5x5 matrix of 64bit. 1600 bits === 200 bytes\n if (0 >= this.blockLen || this.blockLen >= 200)\n throw new Error('Sha3 supports only keccak-f1600 function');\n this.state = new Uint8Array(200);\n this.state32 = u32(this.state);\n }\n keccak() {\n keccakP(this.state32, this.rounds);\n this.posOut = 0;\n this.pos = 0;\n }\n update(data) {\n exists(this);\n const { blockLen, state } = this;\n data = toBytes(data);\n const len = data.length;\n for (let pos = 0; pos < len;) {\n const take = Math.min(blockLen - this.pos, len - pos);\n for (let i = 0; i < take; i++)\n state[this.pos++] ^= data[pos++];\n if (this.pos === blockLen)\n this.keccak();\n }\n return this;\n }\n finish() {\n if (this.finished)\n return;\n this.finished = true;\n const { state, suffix, pos, blockLen } = this;\n // Do the padding\n state[pos] ^= suffix;\n if ((suffix & 0x80) !== 0 && pos === blockLen - 1)\n this.keccak();\n state[blockLen - 1] ^= 0x80;\n this.keccak();\n }\n writeInto(out) {\n exists(this, false);\n bytes(out);\n this.finish();\n const bufferOut = this.state;\n const { blockLen } = this;\n for (let pos = 0, len = out.length; pos < len;) {\n if (this.posOut >= blockLen)\n this.keccak();\n const take = Math.min(blockLen - this.posOut, len - pos);\n out.set(bufferOut.subarray(this.posOut, this.posOut + take), pos);\n this.posOut += take;\n pos += take;\n }\n return out;\n }\n xofInto(out) {\n // Sha3/Keccak usage with XOF is probably mistake, only SHAKE instances can do XOF\n if (!this.enableXOF)\n throw new Error('XOF is not possible for this instance');\n return this.writeInto(out);\n }\n xof(bytes) {\n number(bytes);\n return this.xofInto(new Uint8Array(bytes));\n }\n digestInto(out) {\n output(out, this);\n if (this.finished)\n throw new Error('digest() was already called');\n this.writeInto(out);\n this.destroy();\n return out;\n }\n digest() {\n return this.digestInto(new Uint8Array(this.outputLen));\n }\n destroy() {\n this.destroyed = true;\n this.state.fill(0);\n }\n _cloneInto(to) {\n const { blockLen, suffix, outputLen, rounds, enableXOF } = this;\n to || (to = new Keccak(blockLen, suffix, outputLen, enableXOF, rounds));\n to.state32.set(this.state32);\n to.pos = this.pos;\n to.posOut = this.posOut;\n to.finished = this.finished;\n to.rounds = rounds;\n // Suffix can change in cSHAKE\n to.suffix = suffix;\n to.outputLen = outputLen;\n to.enableXOF = enableXOF;\n to.destroyed = this.destroyed;\n return to;\n }\n}\nconst gen = (suffix, blockLen, outputLen) => wrapConstructor(() => new Keccak(blockLen, suffix, outputLen));\nexport const sha3_224 = /* @__PURE__ */ gen(0x06, 144, 224 / 8);\n/**\n * SHA3-256 hash function\n * @param message - that would be hashed\n */\nexport const sha3_256 = /* @__PURE__ */ gen(0x06, 136, 256 / 8);\nexport const sha3_384 = /* @__PURE__ */ gen(0x06, 104, 384 / 8);\nexport const sha3_512 = /* @__PURE__ */ gen(0x06, 72, 512 / 8);\nexport const keccak_224 = /* @__PURE__ */ gen(0x01, 144, 224 / 8);\n/**\n * keccak-256 hash function. Different from SHA3-256.\n * @param message - that would be hashed\n */\nexport const keccak_256 = /* @__PURE__ */ gen(0x01, 136, 256 / 8);\nexport const keccak_384 = /* @__PURE__ */ gen(0x01, 104, 384 / 8);\nexport const keccak_512 = /* @__PURE__ */ gen(0x01, 72, 512 / 8);\nconst genShake = (suffix, blockLen, outputLen) => wrapXOFConstructorWithOpts((opts = {}) => new Keccak(blockLen, suffix, opts.dkLen === undefined ? outputLen : opts.dkLen, true));\nexport const shake128 = /* @__PURE__ */ genShake(0x1f, 168, 128 / 8);\nexport const shake256 = /* @__PURE__ */ genShake(0x1f, 136, 256 / 8);\n//# sourceMappingURL=sha3.js.map"],"names":["bytes"],"mappings":"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","x_google_ignoreList":[0]}
@@ -1,9 +1,9 @@
1
- import Buffer from "./standards-sdk.es22.js";
1
+ import Buffer from "./standards-sdk.es23.js";
2
2
  import { KeyList, TopicCreateTransaction, AccountId, Transaction, TopicMessageSubmitTransaction, Hbar } from "@hashgraph/sdk";
3
3
  import { Logger } from "./standards-sdk.es15.js";
4
- import { I as InscriptionSDK } from "./standards-sdk.es25.js";
4
+ import { I as InscriptionSDK } from "./standards-sdk.es24.js";
5
5
  import { HCS10BaseClient, Hcs10MemoType } from "./standards-sdk.es5.js";
6
- import { m as mimeTypesExports } from "./standards-sdk.es26.js";
6
+ import { m as mimeTypesExports } from "./standards-sdk.es28.js";
7
7
  import { AgentBuilder } from "./standards-sdk.es11.js";
8
8
  import { HCS11Client } from "./standards-sdk.es13.js";
9
9
  import { ProgressReporter } from "./standards-sdk.es17.js";
@@ -1 +1 @@
1
- {"version":3,"file":"standards-sdk.es8.js","sources":["../../src/hcs-10/browser.ts"],"sourcesContent":["import {\n KeyList,\n PublicKey,\n TopicCreateTransaction,\n TopicMessageSubmitTransaction,\n TransactionReceipt,\n PrivateKey,\n Hbar,\n AccountId,\n} from '@hashgraph/sdk';\nimport { HashinalsWalletConnectSDK } from '@hashgraphonline/hashinal-wc';\nimport { Logger, LogLevel } from '../utils/logger';\nimport {\n InscriptionSDK,\n RetrievedInscriptionResult,\n} from '@kiloscribe/inscription-sdk';\nimport { HCS10BaseClient } from './base-client';\nimport * as mime from 'mime-types';\nimport {\n AgentConfig,\n InscribePfpResponse,\n StoreHCS11ProfileResponse,\n AgentRegistrationResult,\n HandleConnectionRequestResponse,\n RegistrationProgressCallback,\n AgentCreationState,\n GetAccountAndSignerResponse,\n} from './types';\nimport {\n HCS11Client,\n AgentMetadata as AIAgentMetadata,\n InscribeProfileResponse,\n HCS11Profile,\n AIAgentProfile,\n PersonalProfile,\n SocialLink,\n SocialPlatform,\n} from '../hcs-11';\nimport { ProgressReporter, ProgressData } from '../utils/progress-reporter';\nimport { Transaction } from '@hashgraph/sdk';\nimport { AgentBuilder } from '../hcs-11/agent-builder';\nimport { PersonBuilder } from '../hcs-11/person-builder';\nimport { Hcs10MemoType } from './base-client';\nimport { inscribe, inscribeWithSigner } from '../inscribe/inscriber';\n\nconst isBrowser = typeof window !== 'undefined';\n\nexport type BrowserHCSClientConfig = {\n network: 'mainnet' | 'testnet';\n hwc: HashinalsWalletConnectSDK;\n logLevel?: LogLevel;\n prettyPrint?: boolean;\n guardedRegistryTopicId?: string;\n guardedRegistryBaseUrl?: string;\n feeAmount?: number;\n};\n\ninterface SocialLinks {\n x?: string;\n discord?: string;\n github?: string;\n website?: string;\n}\n\nexport type BrowserAgentConfig = Omit<\n AgentConfig<BrowserHCSClient>,\n 'privateKey'\n> & {\n client: BrowserHCSClient;\n};\n\nexport type RegisteredAgent = {\n outboundTopicId: string;\n inboundTopicId: string;\n pfpTopicId: string;\n profileTopicId: string;\n error?: string;\n success: boolean;\n state: AgentCreationState;\n};\n\nexport class BrowserHCSClient extends HCS10BaseClient {\n private hwc: HashinalsWalletConnectSDK;\n protected declare logger: Logger;\n private guardedRegistryBaseUrl: string;\n private hcs11Client: HCS11Client | null = null;\n\n constructor(config: BrowserHCSClientConfig) {\n super({\n network: config.network,\n logLevel: config.logLevel,\n prettyPrint: config.prettyPrint,\n feeAmount: config.feeAmount,\n });\n\n this.hwc = config.hwc;\n if (!config.guardedRegistryBaseUrl) {\n this.guardedRegistryBaseUrl = 'https://moonscape.tech';\n } else {\n this.guardedRegistryBaseUrl = config.guardedRegistryBaseUrl;\n }\n\n let logLevel: LogLevel;\n if (config.logLevel) {\n logLevel = config.logLevel;\n } else {\n logLevel = 'info';\n }\n\n this.logger = Logger.getInstance({\n level: logLevel,\n module: 'HCS-Browser',\n prettyPrint: config.prettyPrint,\n });\n\n if (isBrowser) {\n try {\n const { accountId, signer } = this.getAccountAndSigner();\n\n this.hcs11Client = new HCS11Client({\n network: config.network,\n auth: {\n operatorId: accountId,\n signer: signer as any,\n },\n logLevel: config.logLevel,\n });\n } catch (err) {\n this.logger.warn(`Failed to initialize HCS11Client: ${err}`);\n }\n } else {\n this.logger.error(\n 'BrowserHCSClient initialized in server environment - browser-specific features will not be available. Use HCS10Client instead.'\n );\n }\n }\n\n async sendMessage(\n connectionTopicId: string,\n data: string,\n memo?: string,\n submitKey?: PrivateKey,\n options?: {\n progressCallback?: RegistrationProgressCallback;\n waitMaxAttempts?: number;\n waitIntervalMs?: number;\n }\n ): Promise<TransactionReceipt> {\n this.logger.info('Sending message');\n const operatorId = await this.getOperatorId();\n\n const payload = {\n p: 'hcs-10',\n op: 'message',\n operator_id: operatorId,\n data,\n m: memo,\n };\n\n const submissionCheck = await this.canSubmitToTopic(\n connectionTopicId,\n this.hwc.getAccountInfo().accountId\n );\n\n const payloadString = JSON.stringify(payload);\n const isLargePayload = Buffer.from(payloadString).length > 1000;\n\n if (isLargePayload) {\n this.logger.info(\n 'Message payload exceeds 1000 bytes, storing via inscription'\n );\n try {\n const contentBuffer = Buffer.from(data);\n const fileName = `message-${Date.now()}.json`;\n const inscriptionResult = await this.inscribeFile(\n contentBuffer,\n fileName,\n {\n progressCallback: options?.progressCallback,\n waitMaxAttempts: options?.waitMaxAttempts,\n waitIntervalMs: options?.waitIntervalMs,\n }\n );\n\n if (inscriptionResult?.topic_id) {\n payload.data = `hcs://1/${inscriptionResult.topic_id}`;\n this.logger.info(\n `Large message inscribed with topic ID: ${inscriptionResult.topic_id}`\n );\n } else {\n throw new Error('Failed to inscribe large message content');\n }\n } catch (error) {\n this.logger.error('Error inscribing large message:', error);\n throw new Error(\n `Failed to handle large message: ${\n error instanceof Error ? error.message : 'Unknown error'\n }`\n );\n }\n }\n\n return await this.submitPayload(\n connectionTopicId,\n payload,\n submitKey,\n submissionCheck.requiresFee\n );\n }\n\n async getPublicKey(accountId: string): Promise<PublicKey> {\n return await this.mirrorNode.getPublicKey(accountId);\n }\n\n async handleConnectionRequest(\n inboundTopicId: string,\n requestingAccountId: string,\n connectionId: number,\n connectionMemo: string = 'Connection accepted. Looking forward to collaborating!',\n ttl: number = 60\n ): Promise<HandleConnectionRequestResponse> {\n this.logger.info('Handling connection request');\n const userAccountId = this.hwc.getAccountInfo().accountId;\n if (!userAccountId) {\n throw new Error('Failed to retrieve user account ID');\n }\n\n const requesterKey = await this.mirrorNode.getPublicKey(\n requestingAccountId\n );\n const accountKey = await this.mirrorNode.getPublicKey(userAccountId);\n\n if (!accountKey) {\n throw new Error('Failed to retrieve public key');\n }\n\n const thresholdKey = new KeyList([accountKey, requesterKey], 1);\n const memo = this._generateHcs10Memo(Hcs10MemoType.CONNECTION, {\n ttl,\n inboundTopicId,\n connectionId,\n });\n\n const transaction = new TopicCreateTransaction()\n .setTopicMemo(memo)\n .setAutoRenewAccountId(AccountId.fromString(userAccountId))\n .setAdminKey(thresholdKey)\n .setSubmitKey(thresholdKey);\n\n this.logger.debug('Executing topic creation transaction');\n const txResponse = await this.hwc.executeTransactionWithErrorHandling(\n transaction,\n false\n );\n if (txResponse?.error) {\n this.logger.error(txResponse.error);\n throw new Error(txResponse.error);\n }\n\n const resultReceipt = txResponse?.result;\n if (!resultReceipt?.topicId) {\n this.logger.error('Failed to create topic: topicId is null');\n throw new Error('Failed to create topic: topicId is null');\n }\n\n const connectionTopicId = resultReceipt.topicId.toString();\n const operatorId = `${inboundTopicId}@${userAccountId}`;\n const confirmedConnectionSequenceNumber = await this.confirmConnection(\n inboundTopicId,\n connectionTopicId,\n requestingAccountId,\n connectionId,\n operatorId,\n connectionMemo\n );\n\n const accountTopics = await this.retrieveCommunicationTopics(userAccountId);\n\n const requestingAccountTopics = await this.retrieveCommunicationTopics(\n requestingAccountId\n );\n\n const requestingAccountOperatorId = `${requestingAccountTopics.inboundTopic}@${requestingAccountId}`;\n\n await this.recordOutboundConnectionConfirmation({\n outboundTopicId: accountTopics.outboundTopic,\n requestorOutboundTopicId: requestingAccountTopics.outboundTopic,\n connectionRequestId: connectionId,\n confirmedRequestId: confirmedConnectionSequenceNumber,\n connectionTopicId,\n operatorId: requestingAccountOperatorId,\n memo: `Connection established with ${requestingAccountId}`,\n });\n\n return {\n connectionTopicId,\n confirmedConnectionSequenceNumber,\n operatorId,\n };\n }\n\n async confirmConnection(\n inboundTopicId: string,\n connectionTopicId: string,\n connectedAccountId: string,\n connectionId: number,\n operatorId: string,\n memo: string\n ): Promise<number> {\n this.logger.info('Confirming connection');\n const payload = {\n p: 'hcs-10',\n op: 'connection_created',\n connection_topic_id: connectionTopicId,\n connected_account_id: connectedAccountId,\n operator_id: operatorId,\n connection_id: connectionId,\n m: memo,\n };\n\n const transactionResponse = await this.submitPayload(\n inboundTopicId,\n payload\n );\n if (!transactionResponse?.topicSequenceNumber) {\n this.logger.error(\n 'Failed to confirm connection: sequence number is null'\n );\n throw new Error('Failed to confirm connection: sequence number is null');\n }\n return transactionResponse.topicSequenceNumber.toNumber();\n }\n\n async create(\n builder: AgentBuilder | PersonBuilder,\n options?: {\n progressCallback?: RegistrationProgressCallback;\n existingState?: AgentCreationState;\n ttl?: number;\n updateAccountMemo?: boolean;\n }\n ): Promise<RegisteredAgent | InscribeProfileResponse> {\n const progressCallback = options?.progressCallback;\n const progressReporter = new ProgressReporter({\n module: 'ProfileCreate',\n logger: this.logger,\n callback: progressCallback as any,\n });\n\n try {\n const isAgentBuilder = builder instanceof AgentBuilder;\n\n let state;\n if (options?.existingState) {\n state = options.existingState;\n } else {\n state = {\n currentStage: 'init',\n completedPercentage: 0,\n createdResources: [],\n } as AgentCreationState;\n }\n\n if (isAgentBuilder) {\n this.logger.info('Creating Agent Profile and HCS-10 Topics');\n const agentConfig = (builder as AgentBuilder).build();\n state.agentMetadata = agentConfig.metadata;\n } else {\n this.logger.info('Creating Person HCS-11 Profile');\n }\n\n progressReporter.preparing(\n `Starting ${isAgentBuilder ? 'agent' : 'person'} resource creation`,\n 0,\n {\n state,\n }\n );\n\n const {\n inboundTopicId,\n outboundTopicId,\n state: updatedState,\n } = await this.createCommunicationTopics(options, progressReporter);\n\n state = updatedState;\n\n if (!isAgentBuilder) {\n (builder as PersonBuilder).setInboundTopicId(inboundTopicId);\n (builder as PersonBuilder).setOutboundTopicId(outboundTopicId);\n }\n\n let pfpTopicId: string | undefined;\n let hasPfpBuffer: Buffer | undefined;\n let pfpFileName: string | undefined;\n\n if (isAgentBuilder) {\n const agentProfile = (builder as AgentBuilder).build();\n pfpTopicId = agentProfile.existingPfpTopicId || state.pfpTopicId;\n hasPfpBuffer = agentProfile.pfpBuffer;\n pfpFileName = agentProfile.pfpFileName || 'pfp.png';\n } else {\n const personProfile = (builder as PersonBuilder).build();\n pfpTopicId = state.pfpTopicId;\n hasPfpBuffer = personProfile.pfpBuffer;\n pfpFileName = personProfile.pfpFileName;\n }\n\n if (!pfpTopicId && hasPfpBuffer && pfpFileName) {\n pfpTopicId = await this.handleProfilePictureCreation(\n hasPfpBuffer,\n pfpFileName,\n state,\n progressReporter\n );\n } else if (pfpTopicId) {\n progressReporter.preparing(\n `Using existing profile picture: ${pfpTopicId}`,\n 50,\n { state }\n );\n state.pfpTopicId = pfpTopicId;\n }\n\n await this.createAndInscribeProfile(\n isAgentBuilder,\n builder as any,\n pfpTopicId,\n state,\n inboundTopicId,\n outboundTopicId,\n options,\n progressReporter\n );\n\n state.currentStage = 'complete';\n state.completedPercentage = 100;\n progressReporter.completed(\n `${isAgentBuilder ? 'Agent' : 'Person'} profile created successfully`,\n {\n profileTopicId: state.profileTopicId,\n inboundTopicId,\n outboundTopicId,\n pfpTopicId,\n state,\n }\n );\n\n let outTopicId = '';\n if (state.outboundTopicId) {\n outTopicId = state.outboundTopicId;\n }\n\n let inTopicId = '';\n if (state.inboundTopicId) {\n inTopicId = state.inboundTopicId;\n }\n\n let profilePicTopicId = '';\n if (state.pfpTopicId) {\n profilePicTopicId = state.pfpTopicId;\n }\n\n let profTopicId = '';\n if (state.profileTopicId) {\n profTopicId = state.profileTopicId;\n }\n\n return {\n outboundTopicId: outTopicId,\n inboundTopicId: inTopicId,\n pfpTopicId: profilePicTopicId,\n profileTopicId: profTopicId,\n success: true,\n state,\n } as RegisteredAgent | InscribeProfileResponse;\n } catch (error: any) {\n progressReporter.failed('Error during profile creation', {\n error: error.message,\n });\n return {\n outboundTopicId: '',\n inboundTopicId: '',\n pfpTopicId: '',\n profileTopicId: '',\n success: false,\n error: error.message,\n state: {\n currentStage: 'init',\n completedPercentage: 0,\n error: error.message,\n } as AgentCreationState,\n } as RegisteredAgent;\n }\n }\n\n private async handleProfilePictureCreation(\n pfpBuffer: Buffer,\n pfpFileName: string,\n state: AgentCreationState,\n progressReporter: ProgressReporter\n ): Promise<string> {\n state.currentStage = 'pfp';\n progressReporter.preparing('Creating profile picture', 30, {\n state,\n });\n\n const pfpProgress = progressReporter.createSubProgress({\n minPercent: 30,\n maxPercent: 50,\n logPrefix: 'PFP',\n });\n\n const pfpResult = await this.inscribePfp(pfpBuffer, pfpFileName, {\n progressCallback: (data) =>\n pfpProgress.report({\n ...data,\n progressPercent: data.progressPercent ?? 0,\n details: { ...data.details, state },\n }),\n });\n\n if (!pfpResult.success) {\n let errorMessage = 'Failed to inscribe profile picture';\n if (pfpResult.error) {\n errorMessage = pfpResult.error;\n }\n throw new Error(errorMessage);\n }\n\n const pfpTopicId = pfpResult.pfpTopicId;\n state.pfpTopicId = pfpTopicId;\n\n if (state.createdResources) {\n state.createdResources.push(`pfp:${state.pfpTopicId}`);\n }\n\n progressReporter.preparing('Profile picture created', 50, { state });\n\n return pfpTopicId;\n }\n\n private async createAndInscribeProfile(\n isAgentBuilder: boolean,\n builder: AgentBuilder | PersonBuilder,\n pfpTopicId: string | undefined,\n state: AgentCreationState,\n inboundTopicId: string,\n outboundTopicId: string,\n options?: {\n updateAccountMemo?: boolean;\n },\n progressReporter?: ProgressReporter\n ): Promise<void> {\n if (!this.hcs11Client) {\n if (progressReporter) {\n progressReporter.failed('HCS11Client is not available');\n }\n throw new Error('HCS11Client is not available');\n }\n\n this.logger.info('Creating and inscribing profile');\n if (!state.profileTopicId) {\n if (progressReporter) {\n progressReporter.preparing(\n `Storing HCS-11 ${isAgentBuilder ? 'agent' : 'person'} profile`,\n 80\n );\n }\n\n const profileProgress = progressReporter?.createSubProgress({\n minPercent: 80,\n maxPercent: 95,\n logPrefix: 'StoreProfile',\n });\n\n let hcs11Profile;\n\n if (isAgentBuilder) {\n const agentProfile = (builder as AgentBuilder).build();\n\n const socialLinks = agentProfile.metadata?.socials\n ? Object.entries(agentProfile.metadata.socials).map(\n ([platform, handle]) => ({\n platform: platform as SocialPlatform,\n handle: handle as string,\n })\n )\n : [];\n\n hcs11Profile = this.hcs11Client.createAIAgentProfile(\n agentProfile.name,\n agentProfile.metadata?.type === 'manual' ? 0 : 1,\n agentProfile.capabilities || [],\n agentProfile.metadata?.model || 'unknown',\n {\n alias: agentProfile.name.toLowerCase().replace(/\\s+/g, '_'),\n bio: agentProfile.bio,\n profileImage: pfpTopicId ? `hcs://1/${pfpTopicId}` : undefined,\n socials: socialLinks,\n properties: agentProfile.metadata?.properties || {},\n inboundTopicId,\n outboundTopicId,\n creator: agentProfile.metadata?.creator,\n }\n );\n } else {\n const personProfile = (builder as PersonBuilder).build();\n\n const { pfpBuffer, pfpFileName, ...cleanProfile } = personProfile;\n\n hcs11Profile = this.hcs11Client.createPersonalProfile(\n personProfile.display_name,\n {\n alias: personProfile.alias,\n bio: personProfile.bio,\n socials: personProfile.socials,\n profileImage: pfpTopicId\n ? `hcs://1/${pfpTopicId}`\n : personProfile.profileImage,\n properties: personProfile.properties,\n inboundTopicId,\n outboundTopicId,\n }\n );\n }\n\n const profileResult = await this.hcs11Client.createAndInscribeProfile(\n hcs11Profile,\n options?.updateAccountMemo ?? true,\n {\n progressCallback: (data) =>\n profileProgress?.report({\n ...data,\n progressPercent: data.progressPercent ?? 0,\n }),\n }\n );\n\n if (!profileResult.success) {\n if (progressReporter) {\n progressReporter.failed(\n `Failed to inscribe ${isAgentBuilder ? 'agent' : 'person'} profile`,\n {\n error: profileResult.error,\n }\n );\n }\n\n let errorMessage = `Failed to inscribe ${\n isAgentBuilder ? 'agent' : 'person'\n } profile`;\n if (profileResult.error) {\n errorMessage = profileResult.error;\n }\n throw new Error(errorMessage);\n }\n\n state.profileTopicId = profileResult.profileTopicId;\n\n if (state.createdResources) {\n state.createdResources.push(`profile:${profileResult.profileTopicId}`);\n }\n\n if (progressReporter) {\n progressReporter.preparing('HCS-11 Profile stored', 95, { state });\n }\n } else if (progressReporter) {\n progressReporter.preparing(\n `Using existing ${isAgentBuilder ? 'agent' : 'person'} profile`,\n 95,\n {\n state,\n }\n );\n }\n }\n\n private initializeRegistrationState(\n inboundTopicId: string,\n existingState?: AgentCreationState\n ): AgentCreationState {\n const state = existingState || {\n inboundTopicId,\n currentStage: 'registration',\n completedPercentage: 0,\n createdResources: [],\n };\n\n if (\n state.currentStage !== 'registration' &&\n state.currentStage !== 'complete'\n ) {\n state.currentStage = 'registration';\n }\n\n return state;\n }\n\n private updateStateForCompletedRegistration(\n state: AgentCreationState,\n inboundTopicId: string\n ): void {\n state.currentStage = 'complete';\n state.completedPercentage = 100;\n if (state.createdResources) {\n state.createdResources.push(`registration:${inboundTopicId}`);\n }\n }\n\n async registerAgentWithGuardedRegistry(\n accountId: string,\n network: string = this.network,\n options?: {\n progressCallback?: RegistrationProgressCallback;\n maxAttempts?: number;\n delayMs?: number;\n existingState?: AgentCreationState;\n }\n ): Promise<AgentRegistrationResult> {\n try {\n this.logger.info('Registering agent with guarded registry');\n\n const agentProfile = await this.retrieveProfile(accountId);\n const inboundTopicId = agentProfile.topicInfo.inboundTopic;\n const state = this.initializeRegistrationState(\n inboundTopicId,\n options?.existingState\n );\n const progressReporter = new ProgressReporter({\n module: 'AgentRegistration',\n logger: this.logger,\n callback: options?.progressCallback,\n });\n\n progressReporter.preparing('Preparing agent registration', 10, {\n inboundTopicId,\n accountId,\n });\n\n const registrationResult = await this.executeRegistration(\n accountId,\n network as string,\n this.guardedRegistryBaseUrl,\n this.logger\n );\n\n if (!registrationResult.success) {\n return {\n ...registrationResult,\n state,\n };\n }\n\n progressReporter.submitting('Submitting registration to registry', 30, {\n transactionId: registrationResult.transactionId,\n });\n\n if (registrationResult.transaction) {\n const transaction = Transaction.fromBytes(\n Buffer.from(registrationResult.transaction, 'base64')\n );\n\n this.logger.info(`Processing registration transaction`);\n const txResult = await this.hwc.executeTransactionWithErrorHandling(\n transaction as any,\n true\n );\n\n if (txResult.error) {\n return {\n ...registrationResult,\n error: txResult.error,\n success: false,\n state,\n };\n }\n\n this.logger.info(`Successfully processed registration transaction`);\n }\n\n progressReporter.confirming('Confirming registration transaction', 60, {\n accountId,\n inboundTopicId,\n transactionId: registrationResult.transactionId,\n });\n\n const maxAttempts = options?.maxAttempts ?? 60;\n const delayMs = options?.delayMs ?? 2000;\n\n const confirmed = await this.waitForRegistrationConfirmation(\n registrationResult.transactionId!,\n network,\n this.guardedRegistryBaseUrl,\n maxAttempts,\n delayMs,\n this.logger\n );\n\n this.updateStateForCompletedRegistration(state, inboundTopicId);\n\n progressReporter.completed('Agent registration complete', {\n transactionId: registrationResult.transactionId,\n inboundTopicId,\n state,\n confirmed,\n });\n\n return {\n ...registrationResult,\n confirmed,\n state,\n };\n } catch (error: any) {\n this.logger.error(`Registration error: ${error.message}`);\n return {\n error: `Error during registration: ${error.message}`,\n success: false,\n state: {\n currentStage: 'registration',\n completedPercentage: 0,\n error: error.message,\n },\n };\n }\n }\n\n async createAndRegisterAgent(\n builder: AgentBuilder,\n options?: {\n progressCallback?: RegistrationProgressCallback;\n maxAttempts?: number;\n delayMs?: number;\n existingState?: AgentCreationState;\n baseUrl?: string;\n }\n ): Promise<AgentRegistrationResult> {\n try {\n const agentConfig = builder.build();\n const progressCallback = options?.progressCallback;\n const progressReporter = new ProgressReporter({\n module: 'AgentCreateRegister',\n logger: this.logger,\n callback: progressCallback as any,\n });\n\n let state =\n options?.existingState ||\n ({\n currentStage: 'init',\n completedPercentage: 0,\n createdResources: [],\n } as AgentCreationState);\n\n state.agentMetadata = agentConfig.metadata;\n\n progressReporter.preparing('Starting agent creation process', 0, {\n state,\n });\n\n if (\n state.currentStage !== 'complete' ||\n !state.inboundTopicId ||\n !state.outboundTopicId ||\n !state.profileTopicId\n ) {\n const createResult = await this.create(builder, {\n progressCallback: (progress: any) => {\n const adjustedPercent = (progress.progressPercent || 0) * 0.3;\n progressReporter.report({\n ...progress,\n progressPercent: adjustedPercent,\n details: {\n ...progress.details,\n state: progress.details?.state || state,\n },\n });\n },\n existingState: state,\n updateAccountMemo: false,\n });\n\n if (!('state' in createResult)) {\n throw new Error('Create method did not return expected agent state.');\n }\n\n if (!createResult.success) {\n throw new Error(\n createResult.error || 'Failed to create agent resources'\n );\n }\n\n state = createResult.state;\n state.agentMetadata = agentConfig.metadata;\n }\n\n progressReporter.preparing(\n `Agent creation status: ${state.currentStage}, ${state.completedPercentage}%`,\n 30,\n { state }\n );\n\n const { accountId } = this.getAccountAndSigner();\n\n if (\n state.currentStage !== 'complete' ||\n !state.createdResources?.includes(\n `registration:${state.inboundTopicId}`\n )\n ) {\n if (options?.baseUrl) {\n this.guardedRegistryBaseUrl = options.baseUrl;\n }\n\n const registrationResult = await this.registerAgentWithGuardedRegistry(\n accountId,\n agentConfig.network,\n {\n progressCallback: (progress) => {\n const adjustedPercent =\n 30 + (progress.progressPercent || 0) * 0.7;\n progressReporter.report({\n ...progress,\n progressPercent: adjustedPercent,\n details: {\n ...progress.details,\n state: progress.details?.state || state,\n },\n });\n },\n maxAttempts: options?.maxAttempts,\n delayMs: options?.delayMs,\n existingState: state,\n }\n );\n\n if (!registrationResult.success) {\n throw new Error(\n registrationResult.error || 'Failed to register agent with registry'\n );\n }\n\n state = registrationResult.state;\n\n if (state.profileTopicId) {\n await this.hcs11Client?.updateAccountMemoWithProfile(\n accountId,\n state.profileTopicId\n );\n }\n }\n\n progressReporter.completed('Agent creation and registration complete', {\n state,\n });\n\n return {\n success: true,\n state,\n metadata: {\n accountId,\n operatorId: `${state.inboundTopicId}@${accountId}`,\n inboundTopicId: state.inboundTopicId!,\n outboundTopicId: state.outboundTopicId!,\n profileTopicId: state.profileTopicId!,\n pfpTopicId: state.pfpTopicId!,\n privateKey: null,\n ...state.agentMetadata,\n },\n };\n } catch (error: any) {\n this.logger.error(\n `Failed to create and register agent: ${error.message}`\n );\n return {\n success: false,\n error: `Failed to create and register agent: ${error.message}`,\n state:\n options?.existingState ||\n ({\n currentStage: 'init',\n completedPercentage: 0,\n error: error.message,\n } as AgentCreationState),\n };\n }\n }\n\n async storeHCS11Profile(\n agentName: string,\n agentBio: string,\n inboundTopicId: string,\n outboundTopicId: string,\n capabilities: number[] = [],\n metadata: Record<string, any> = {},\n pfpBuffer?: Buffer,\n pfpFileName?: string,\n existingPfpTopicId?: string,\n options?: {\n progressCallback?: RegistrationProgressCallback;\n }\n ): Promise<StoreHCS11ProfileResponse> {\n try {\n const progressCallback = options?.progressCallback;\n const progressReporter = new ProgressReporter({\n module: 'StoreHCS11Profile',\n logger: this.logger,\n callback: progressCallback as any,\n });\n\n progressReporter.preparing('Preparing agent profile data', 0);\n\n let pfpTopicId = existingPfpTopicId;\n\n if (!pfpTopicId && pfpBuffer && pfpFileName) {\n const pfpProgress = progressReporter.createSubProgress({\n minPercent: 0,\n maxPercent: 60,\n logPrefix: 'PFP',\n });\n\n const pfpResult = await this.inscribePfp(pfpBuffer, pfpFileName, {\n progressCallback: (data) => {\n pfpProgress.report({\n stage: data.stage,\n message: data.message,\n progressPercent: data.progressPercent || 0,\n details: data.details,\n });\n },\n });\n\n if (!pfpResult.success) {\n progressReporter.failed(\n 'Failed to inscribe profile picture, continuing without PFP'\n );\n } else {\n pfpTopicId = pfpResult.pfpTopicId;\n }\n } else if (existingPfpTopicId) {\n progressReporter.preparing(\n `Using existing profile picture: ${existingPfpTopicId}`,\n 30\n );\n } else {\n progressReporter.preparing('No profile picture provided', 30);\n }\n\n if (!this.hcs11Client) {\n progressReporter.failed(\n 'HCS11Client is not available in this environment'\n );\n return {\n profileTopicId: '',\n success: false,\n error: 'HCS11Client is not available in this environment',\n transactionId: '',\n };\n }\n\n const agentType = this.hcs11Client.getAgentTypeFromMetadata({\n type: metadata.type || 'autonomous',\n } as AIAgentMetadata);\n\n progressReporter.preparing('Building agent profile', 65);\n\n const formattedSocials: SocialLink[] | undefined = metadata.socials\n ? Object.entries(metadata.socials)\n .filter(([_, handle]) => handle)\n .map(([platform, handle]) => ({\n platform: platform as SocialPlatform,\n handle: handle as string,\n }))\n : undefined;\n\n const profile = this.hcs11Client.createAIAgentProfile(\n agentName,\n agentType,\n capabilities,\n metadata.model || 'unknown',\n {\n alias: agentName.toLowerCase().replace(/\\s+/g, '_'),\n bio: agentBio,\n profileImage: pfpTopicId ? `hcs://1/${pfpTopicId}` : undefined,\n socials: formattedSocials,\n properties: {\n version: metadata.version || '1.0.0',\n creator: metadata.creator || 'Unknown',\n supported_languages: metadata.supported_languages || ['en'],\n permissions: metadata.permissions || [],\n model_details: metadata.model_details,\n training: metadata.training,\n capabilities_description: metadata.capabilities_description,\n ...metadata,\n },\n inboundTopicId,\n outboundTopicId,\n creator: metadata.creator,\n }\n );\n\n const profileProgress = progressReporter.createSubProgress({\n minPercent: 65,\n maxPercent: 100,\n logPrefix: 'Profile',\n });\n\n const profileResult = await this.hcs11Client.createAndInscribeProfile(\n profile,\n true,\n {\n progressCallback: (profileData) => {\n profileProgress.report({\n stage: profileData.stage,\n message: profileData.message,\n progressPercent: profileData.progressPercent || 0,\n details: profileData.details,\n });\n },\n }\n );\n\n if (!profileResult.success) {\n progressReporter.failed('Failed to inscribe profile');\n return {\n profileTopicId: '',\n success: false,\n error: profileResult.error || 'Failed to inscribe profile',\n transactionId: profileResult.transactionId || '',\n };\n }\n\n progressReporter.completed('Profile stored successfully', {\n profileTopicId: profileResult.profileTopicId,\n });\n\n return {\n profileTopicId: profileResult.profileTopicId,\n pfpTopicId,\n success: true,\n transactionId: profileResult.transactionId || '',\n };\n } catch (error: any) {\n this.logger.error(`Error storing HCS11 profile: ${error.message}`);\n return {\n profileTopicId: '',\n success: false,\n error: error.message,\n transactionId: '',\n };\n }\n }\n\n async createTopic(\n memo: string,\n adminKey?: boolean,\n submitKey?: boolean\n ): Promise<{\n success: boolean;\n topicId?: string;\n error?: string;\n }> {\n this.logger.info('Creating topic');\n const { accountId, signer } = this.getAccountAndSigner();\n\n const transaction = new TopicCreateTransaction().setTopicMemo(memo);\n\n const publicKey = await this.mirrorNode.getPublicKey(accountId);\n\n if (adminKey && publicKey) {\n transaction.setAdminKey(publicKey);\n transaction.setAutoRenewAccountId(accountId);\n }\n\n if (submitKey && publicKey) {\n transaction.setSubmitKey(publicKey);\n }\n\n const transactionResponse =\n await this.hwc.executeTransactionWithErrorHandling(\n transaction as any,\n false\n );\n\n const error = transactionResponse.error;\n\n if (error) {\n this.logger.error(error);\n return {\n success: false,\n error,\n };\n }\n\n const resultReceipt = transactionResponse.result;\n\n if (!resultReceipt?.topicId) {\n this.logger.error('Failed to create topic: topicId is null');\n return {\n success: false,\n error: 'Failed to create topic: topicId is null',\n };\n }\n\n return {\n success: true,\n topicId: resultReceipt.topicId.toString(),\n };\n }\n\n public async submitPayload(\n topicId: string,\n payload: object | string,\n submitKey?: PrivateKey,\n requiresFee?: boolean\n ): Promise<TransactionReceipt> {\n this.logger.debug(`Submitting payload to topic ${topicId}`);\n\n let message: string;\n if (typeof payload === 'string') {\n message = payload;\n } else {\n message = JSON.stringify(payload);\n }\n\n const transaction = new TopicMessageSubmitTransaction()\n .setTopicId(topicId)\n .setMessage(message);\n\n let transactionResponse: {\n result?: TransactionReceipt;\n error?: string;\n };\n\n if (requiresFee) {\n this.logger.info(\n 'Topic requires fee payment, setting max transaction fee'\n );\n transaction.setMaxTransactionFee(new Hbar(this.feeAmount));\n }\n\n if (submitKey) {\n const { accountId, signer } = this.getAccountAndSigner();\n transaction.freezeWithSigner(signer as any);\n const signedTransaction = await transaction.sign(submitKey);\n transactionResponse = await this.hwc.executeTransactionWithErrorHandling(\n signedTransaction,\n true\n );\n } else {\n transactionResponse = await this.hwc.executeTransactionWithErrorHandling(\n transaction,\n false\n );\n }\n\n if (transactionResponse?.error) {\n this.logger.error(\n `Failed to submit payload: ${transactionResponse.error}`\n );\n throw new Error(`Failed to submit payload: ${transactionResponse.error}`);\n }\n\n if (!transactionResponse?.result) {\n this.logger.error(\n 'Failed to submit message: receipt is null or undefined'\n );\n throw new Error('Failed to submit message: receipt is null or undefined');\n }\n\n this.logger.debug('Payload submitted successfully via HWC');\n return transactionResponse.result;\n }\n\n async inscribeFile(\n buffer: Buffer,\n fileName: string,\n options?: {\n progressCallback?: RegistrationProgressCallback;\n waitMaxAttempts?: number;\n waitIntervalMs?: number;\n }\n ): Promise<RetrievedInscriptionResult> {\n const { accountId, signer } = this.getAccountAndSigner();\n\n const mimeType = mime.lookup(fileName) || 'application/octet-stream';\n\n const sdk = await InscriptionSDK.createWithAuth({\n type: 'client',\n accountId: accountId,\n signer: signer as any,\n network: this.network as 'testnet' | 'mainnet',\n });\n\n const inscriptionOptions = {\n mode: 'file' as const,\n waitForConfirmation: true,\n waitMaxAttempts: options?.waitMaxAttempts || 30,\n waitIntervalMs: options?.waitIntervalMs || 4000,\n progressCallback: options?.progressCallback,\n logging: {\n level: this.logger.getLevel ? this.logger.getLevel() : 'info',\n },\n };\n\n const response = await inscribeWithSigner(\n {\n type: 'buffer',\n buffer,\n fileName,\n mimeType,\n },\n signer as any,\n {\n ...inscriptionOptions,\n network: this.network as 'testnet' | 'mainnet',\n },\n sdk\n );\n\n if (!response.confirmed || !response.inscription) {\n throw new Error('Inscription was not confirmed');\n }\n\n return response.inscription;\n }\n\n getAccountAndSigner(): GetAccountAndSignerResponse {\n const accountInfo = this?.hwc?.getAccountInfo();\n const accountId = accountInfo?.accountId?.toString();\n const signer = this?.hwc?.dAppConnector?.signers?.find((s) => {\n return s.getAccountId().toString() === accountId;\n });\n\n if (!signer) {\n this.logger.error('Failed to find signer', {\n accountId,\n signers: this?.hwc?.dAppConnector?.signers,\n accountInfo,\n });\n throw new Error('Failed to find signer');\n }\n\n return { accountId, signer: signer as any };\n }\n\n /**\n * Inscribes a profile picture (PFP) on HCS-11.\n *\n * @param buffer - The buffer containing the PFP image.\n * @param fileName - The name of the file containing the PFP image.\n * @param options - Optional configuration options.\n * @returns A promise that resolves to the topic ID of the inscribed PFP.\n */\n async inscribePfp(\n buffer: Buffer,\n fileName: string,\n options?: {\n progressCallback?: RegistrationProgressCallback;\n }\n ): Promise<InscribePfpResponse> {\n try {\n const progressCallback = options?.progressCallback;\n const progressReporter = new ProgressReporter({\n module: 'PFP-Inscription',\n logger: this.logger,\n callback: progressCallback as any,\n });\n\n if (!this.hcs11Client) {\n progressReporter.failed(\n 'HCS11Client is not available in this environment'\n );\n return {\n pfpTopicId: '',\n success: false,\n error: 'HCS11Client is not available in this environment',\n transactionId: '',\n };\n }\n\n progressReporter.preparing('Preparing to inscribe profile picture', 10);\n this.logger.info('Inscribing profile picture using HCS-11 client');\n\n const wrappedProgressCallback = (data: any) => {\n progressReporter.report({\n stage: data.stage || 'confirming',\n message: data.message || 'Processing PFP inscription',\n progressPercent: data.progressPercent || 50,\n details: data.details,\n });\n };\n\n const imageResult = await this.hcs11Client.inscribeImage(\n buffer,\n fileName,\n { progressCallback: wrappedProgressCallback }\n );\n\n if (!imageResult.success) {\n let errorMessage = 'Failed to inscribe profile picture';\n if (imageResult.error) {\n errorMessage = imageResult.error;\n }\n\n let txId = '';\n if (imageResult.transactionId) {\n txId = imageResult.transactionId;\n }\n\n return {\n pfpTopicId: '',\n success: false,\n error: errorMessage,\n transactionId: txId,\n };\n }\n\n progressReporter.completed('Successfully inscribed profile picture', {\n pfpTopicId: imageResult.imageTopicId,\n });\n\n this.logger.info(\n `Successfully inscribed profile picture with topic ID: ${imageResult.imageTopicId}`\n );\n return {\n pfpTopicId: imageResult.imageTopicId,\n success: true,\n transactionId: imageResult.transactionId || '',\n };\n } catch (error: any) {\n this.logger.error(`Error inscribing profile picture: ${error.message}`);\n return {\n pfpTopicId: '',\n success: false,\n error: error.message,\n transactionId: '',\n };\n }\n }\n\n private async createCommunicationTopics(\n options?: {\n existingState?: AgentCreationState;\n ttl?: number;\n },\n progressReporter?: ProgressReporter\n ): Promise<{\n inboundTopicId: string;\n outboundTopicId: string;\n state: AgentCreationState;\n }> {\n let state =\n options?.existingState ||\n ({\n currentStage: 'init',\n completedPercentage: 0,\n createdResources: [],\n } as AgentCreationState);\n\n if (progressReporter) {\n progressReporter.preparing('Starting communication topic creation', 0, {\n state,\n });\n }\n\n const { accountId } = this.getAccountAndSigner();\n if (!state.outboundTopicId) {\n state.currentStage = 'topics';\n if (progressReporter) {\n progressReporter.preparing('Creating outbound topic', 5, {\n state,\n });\n }\n const outboundMemo = this._generateHcs10Memo(Hcs10MemoType.OUTBOUND, {\n ttl: options?.ttl,\n accountId,\n });\n const outboundResult = await this.createTopic(outboundMemo, true, true);\n if (!outboundResult.success || !outboundResult.topicId) {\n throw new Error(\n outboundResult.error || 'Failed to create outbound topic'\n );\n }\n state.outboundTopicId = outboundResult.topicId;\n if (state.createdResources)\n state.createdResources.push(`outbound:${state.outboundTopicId}`);\n }\n\n if (!state.inboundTopicId) {\n state.currentStage = 'topics';\n if (progressReporter) {\n progressReporter.preparing('Creating inbound topic', 10, {\n state,\n });\n }\n const inboundMemo = this._generateHcs10Memo(Hcs10MemoType.INBOUND, {\n ttl: options?.ttl,\n accountId,\n });\n // TODO: mimic SDK's createInboundTopic\n const inboundResult = await this.createTopic(inboundMemo, true, false);\n if (!inboundResult.success || !inboundResult.topicId) {\n throw new Error(\n inboundResult.error || 'Failed to create inbound topic'\n );\n }\n state.inboundTopicId = inboundResult.topicId;\n if (state.createdResources)\n state.createdResources.push(`inbound:${state.inboundTopicId}`);\n }\n\n return {\n inboundTopicId: state.inboundTopicId,\n outboundTopicId: state.outboundTopicId,\n state,\n };\n }\n}\n"],"names":["mime.lookup"],"mappings":";;;;;;;;;;AA6CA,MAAM,YAAY,OAAO,WAAW;AAoC7B,MAAM,yBAAyB,gBAAgB;AAAA,EAMpD,YAAY,QAAgC;AACpC,UAAA;AAAA,MACJ,SAAS,OAAO;AAAA,MAChB,UAAU,OAAO;AAAA,MACjB,aAAa,OAAO;AAAA,MACpB,WAAW,OAAO;AAAA,IAAA,CACnB;AARH,SAAQ,cAAkC;AAUxC,SAAK,MAAM,OAAO;AACd,QAAA,CAAC,OAAO,wBAAwB;AAClC,WAAK,yBAAyB;AAAA,IAAA,OACzB;AACL,WAAK,yBAAyB,OAAO;AAAA,IAAA;AAGnC,QAAA;AACJ,QAAI,OAAO,UAAU;AACnB,iBAAW,OAAO;AAAA,IAAA,OACb;AACM,iBAAA;AAAA,IAAA;AAGR,SAAA,SAAS,OAAO,YAAY;AAAA,MAC/B,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,aAAa,OAAO;AAAA,IAAA,CACrB;AAED,QAAI,WAAW;AACT,UAAA;AACF,cAAM,EAAE,WAAW,WAAW,KAAK,oBAAoB;AAElD,aAAA,cAAc,IAAI,YAAY;AAAA,UACjC,SAAS,OAAO;AAAA,UAChB,MAAM;AAAA,YACJ,YAAY;AAAA,YACZ;AAAA,UACF;AAAA,UACA,UAAU,OAAO;AAAA,QAAA,CAClB;AAAA,eACM,KAAK;AACZ,aAAK,OAAO,KAAK,qCAAqC,GAAG,EAAE;AAAA,MAAA;AAAA,IAC7D,OACK;AACL,WAAK,OAAO;AAAA,QACV;AAAA,MACF;AAAA,IAAA;AAAA,EACF;AAAA,EAGF,MAAM,YACJ,mBACA,MACA,MACA,WACA,SAK6B;AACxB,SAAA,OAAO,KAAK,iBAAiB;AAC5B,UAAA,aAAa,MAAM,KAAK,cAAc;AAE5C,UAAM,UAAU;AAAA,MACd,GAAG;AAAA,MACH,IAAI;AAAA,MACJ,aAAa;AAAA,MACb;AAAA,MACA,GAAG;AAAA,IACL;AAEM,UAAA,kBAAkB,MAAM,KAAK;AAAA,MACjC;AAAA,MACA,KAAK,IAAI,iBAAiB;AAAA,IAC5B;AAEM,UAAA,gBAAgB,KAAK,UAAU,OAAO;AAC5C,UAAM,iBAAiB,OAAO,KAAK,aAAa,EAAE,SAAS;AAE3D,QAAI,gBAAgB;AAClB,WAAK,OAAO;AAAA,QACV;AAAA,MACF;AACI,UAAA;AACI,cAAA,gBAAgB,OAAO,KAAK,IAAI;AACtC,cAAM,WAAW,WAAW,KAAK,IAAA,CAAK;AAChC,cAAA,oBAAoB,MAAM,KAAK;AAAA,UACnC;AAAA,UACA;AAAA,UACA;AAAA,YACE,kBAAkB,SAAS;AAAA,YAC3B,iBAAiB,SAAS;AAAA,YAC1B,gBAAgB,SAAS;AAAA,UAAA;AAAA,QAE7B;AAEA,YAAI,mBAAmB,UAAU;AACvB,kBAAA,OAAO,WAAW,kBAAkB,QAAQ;AACpD,eAAK,OAAO;AAAA,YACV,0CAA0C,kBAAkB,QAAQ;AAAA,UACtE;AAAA,QAAA,OACK;AACC,gBAAA,IAAI,MAAM,0CAA0C;AAAA,QAAA;AAAA,eAErD,OAAO;AACT,aAAA,OAAO,MAAM,mCAAmC,KAAK;AAC1D,cAAM,IAAI;AAAA,UACR,mCACE,iBAAiB,QAAQ,MAAM,UAAU,eAC3C;AAAA,QACF;AAAA,MAAA;AAAA,IACF;AAGF,WAAO,MAAM,KAAK;AAAA,MAChB;AAAA,MACA;AAAA,MACA;AAAA,MACA,gBAAgB;AAAA,IAClB;AAAA,EAAA;AAAA,EAGF,MAAM,aAAa,WAAuC;AACxD,WAAO,MAAM,KAAK,WAAW,aAAa,SAAS;AAAA,EAAA;AAAA,EAGrD,MAAM,wBACJ,gBACA,qBACA,cACA,iBAAyB,0DACzB,MAAc,IAC4B;AACrC,SAAA,OAAO,KAAK,6BAA6B;AAC9C,UAAM,gBAAgB,KAAK,IAAI,eAAiB,EAAA;AAChD,QAAI,CAAC,eAAe;AACZ,YAAA,IAAI,MAAM,oCAAoC;AAAA,IAAA;AAGhD,UAAA,eAAe,MAAM,KAAK,WAAW;AAAA,MACzC;AAAA,IACF;AACA,UAAM,aAAa,MAAM,KAAK,WAAW,aAAa,aAAa;AAEnE,QAAI,CAAC,YAAY;AACT,YAAA,IAAI,MAAM,+BAA+B;AAAA,IAAA;AAGjD,UAAM,eAAe,IAAI,QAAQ,CAAC,YAAY,YAAY,GAAG,CAAC;AAC9D,UAAM,OAAO,KAAK,mBAAmB,cAAc,YAAY;AAAA,MAC7D;AAAA,MACA;AAAA,MACA;AAAA,IAAA,CACD;AAED,UAAM,cAAc,IAAI,uBAAA,EACrB,aAAa,IAAI,EACjB,sBAAsB,UAAU,WAAW,aAAa,CAAC,EACzD,YAAY,YAAY,EACxB,aAAa,YAAY;AAEvB,SAAA,OAAO,MAAM,sCAAsC;AAClD,UAAA,aAAa,MAAM,KAAK,IAAI;AAAA,MAChC;AAAA,MACA;AAAA,IACF;AACA,QAAI,YAAY,OAAO;AAChB,WAAA,OAAO,MAAM,WAAW,KAAK;AAC5B,YAAA,IAAI,MAAM,WAAW,KAAK;AAAA,IAAA;AAGlC,UAAM,gBAAgB,YAAY;AAC9B,QAAA,CAAC,eAAe,SAAS;AACtB,WAAA,OAAO,MAAM,yCAAyC;AACrD,YAAA,IAAI,MAAM,yCAAyC;AAAA,IAAA;AAGrD,UAAA,oBAAoB,cAAc,QAAQ,SAAS;AACzD,UAAM,aAAa,GAAG,cAAc,IAAI,aAAa;AAC/C,UAAA,oCAAoC,MAAM,KAAK;AAAA,MACnD;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAEA,UAAM,gBAAgB,MAAM,KAAK,4BAA4B,aAAa;AAEpE,UAAA,0BAA0B,MAAM,KAAK;AAAA,MACzC;AAAA,IACF;AAEA,UAAM,8BAA8B,GAAG,wBAAwB,YAAY,IAAI,mBAAmB;AAElG,UAAM,KAAK,qCAAqC;AAAA,MAC9C,iBAAiB,cAAc;AAAA,MAC/B,0BAA0B,wBAAwB;AAAA,MAClD,qBAAqB;AAAA,MACrB,oBAAoB;AAAA,MACpB;AAAA,MACA,YAAY;AAAA,MACZ,MAAM,+BAA+B,mBAAmB;AAAA,IAAA,CACzD;AAEM,WAAA;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EAAA;AAAA,EAGF,MAAM,kBACJ,gBACA,mBACA,oBACA,cACA,YACA,MACiB;AACZ,SAAA,OAAO,KAAK,uBAAuB;AACxC,UAAM,UAAU;AAAA,MACd,GAAG;AAAA,MACH,IAAI;AAAA,MACJ,qBAAqB;AAAA,MACrB,sBAAsB;AAAA,MACtB,aAAa;AAAA,MACb,eAAe;AAAA,MACf,GAAG;AAAA,IACL;AAEM,UAAA,sBAAsB,MAAM,KAAK;AAAA,MACrC;AAAA,MACA;AAAA,IACF;AACI,QAAA,CAAC,qBAAqB,qBAAqB;AAC7C,WAAK,OAAO;AAAA,QACV;AAAA,MACF;AACM,YAAA,IAAI,MAAM,uDAAuD;AAAA,IAAA;AAElE,WAAA,oBAAoB,oBAAoB,SAAS;AAAA,EAAA;AAAA,EAG1D,MAAM,OACJ,SACA,SAMoD;AACpD,UAAM,mBAAmB,SAAS;AAC5B,UAAA,mBAAmB,IAAI,iBAAiB;AAAA,MAC5C,QAAQ;AAAA,MACR,QAAQ,KAAK;AAAA,MACb,UAAU;AAAA,IAAA,CACX;AAEG,QAAA;AACF,YAAM,iBAAiB,mBAAmB;AAEtC,UAAA;AACJ,UAAI,SAAS,eAAe;AAC1B,gBAAQ,QAAQ;AAAA,MAAA,OACX;AACG,gBAAA;AAAA,UACN,cAAc;AAAA,UACd,qBAAqB;AAAA,UACrB,kBAAkB,CAAA;AAAA,QACpB;AAAA,MAAA;AAGF,UAAI,gBAAgB;AACb,aAAA,OAAO,KAAK,0CAA0C;AACrD,cAAA,cAAe,QAAyB,MAAM;AACpD,cAAM,gBAAgB,YAAY;AAAA,MAAA,OAC7B;AACA,aAAA,OAAO,KAAK,gCAAgC;AAAA,MAAA;AAGlC,uBAAA;AAAA,QACf,YAAY,iBAAiB,UAAU,QAAQ;AAAA,QAC/C;AAAA,QACA;AAAA,UACE;AAAA,QAAA;AAAA,MAEJ;AAEM,YAAA;AAAA,QACJ;AAAA,QACA;AAAA,QACA,OAAO;AAAA,MACL,IAAA,MAAM,KAAK,0BAA0B,SAAS,gBAAgB;AAE1D,cAAA;AAER,UAAI,CAAC,gBAAgB;AAClB,gBAA0B,kBAAkB,cAAc;AAC1D,gBAA0B,mBAAmB,eAAe;AAAA,MAAA;AAG3D,UAAA;AACA,UAAA;AACA,UAAA;AAEJ,UAAI,gBAAgB;AACZ,cAAA,eAAgB,QAAyB,MAAM;AACxC,qBAAA,aAAa,sBAAsB,MAAM;AACtD,uBAAe,aAAa;AAC5B,sBAAc,aAAa,eAAe;AAAA,MAAA,OACrC;AACC,cAAA,gBAAiB,QAA0B,MAAM;AACvD,qBAAa,MAAM;AACnB,uBAAe,cAAc;AAC7B,sBAAc,cAAc;AAAA,MAAA;AAG1B,UAAA,CAAC,cAAc,gBAAgB,aAAa;AAC9C,qBAAa,MAAM,KAAK;AAAA,UACtB;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACF;AAAA,iBACS,YAAY;AACJ,yBAAA;AAAA,UACf,mCAAmC,UAAU;AAAA,UAC7C;AAAA,UACA,EAAE,MAAM;AAAA,QACV;AACA,cAAM,aAAa;AAAA,MAAA;AAGrB,YAAM,KAAK;AAAA,QACT;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAEA,YAAM,eAAe;AACrB,YAAM,sBAAsB;AACX,uBAAA;AAAA,QACf,GAAG,iBAAiB,UAAU,QAAQ;AAAA,QACtC;AAAA,UACE,gBAAgB,MAAM;AAAA,UACtB;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QAAA;AAAA,MAEJ;AAEA,UAAI,aAAa;AACjB,UAAI,MAAM,iBAAiB;AACzB,qBAAa,MAAM;AAAA,MAAA;AAGrB,UAAI,YAAY;AAChB,UAAI,MAAM,gBAAgB;AACxB,oBAAY,MAAM;AAAA,MAAA;AAGpB,UAAI,oBAAoB;AACxB,UAAI,MAAM,YAAY;AACpB,4BAAoB,MAAM;AAAA,MAAA;AAG5B,UAAI,cAAc;AAClB,UAAI,MAAM,gBAAgB;AACxB,sBAAc,MAAM;AAAA,MAAA;AAGf,aAAA;AAAA,QACL,iBAAiB;AAAA,QACjB,gBAAgB;AAAA,QAChB,YAAY;AAAA,QACZ,gBAAgB;AAAA,QAChB,SAAS;AAAA,QACT;AAAA,MACF;AAAA,aACO,OAAY;AACnB,uBAAiB,OAAO,iCAAiC;AAAA,QACvD,OAAO,MAAM;AAAA,MAAA,CACd;AACM,aAAA;AAAA,QACL,iBAAiB;AAAA,QACjB,gBAAgB;AAAA,QAChB,YAAY;AAAA,QACZ,gBAAgB;AAAA,QAChB,SAAS;AAAA,QACT,OAAO,MAAM;AAAA,QACb,OAAO;AAAA,UACL,cAAc;AAAA,UACd,qBAAqB;AAAA,UACrB,OAAO,MAAM;AAAA,QAAA;AAAA,MAEjB;AAAA,IAAA;AAAA,EACF;AAAA,EAGF,MAAc,6BACZ,WACA,aACA,OACA,kBACiB;AACjB,UAAM,eAAe;AACJ,qBAAA,UAAU,4BAA4B,IAAI;AAAA,MACzD;AAAA,IAAA,CACD;AAEK,UAAA,cAAc,iBAAiB,kBAAkB;AAAA,MACrD,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ,WAAW;AAAA,IAAA,CACZ;AAED,UAAM,YAAY,MAAM,KAAK,YAAY,WAAW,aAAa;AAAA,MAC/D,kBAAkB,CAAC,SACjB,YAAY,OAAO;AAAA,QACjB,GAAG;AAAA,QACH,iBAAiB,KAAK,mBAAmB;AAAA,QACzC,SAAS,EAAE,GAAG,KAAK,SAAS,MAAM;AAAA,MACnC,CAAA;AAAA,IAAA,CACJ;AAEG,QAAA,CAAC,UAAU,SAAS;AACtB,UAAI,eAAe;AACnB,UAAI,UAAU,OAAO;AACnB,uBAAe,UAAU;AAAA,MAAA;AAErB,YAAA,IAAI,MAAM,YAAY;AAAA,IAAA;AAG9B,UAAM,aAAa,UAAU;AAC7B,UAAM,aAAa;AAEnB,QAAI,MAAM,kBAAkB;AAC1B,YAAM,iBAAiB,KAAK,OAAO,MAAM,UAAU,EAAE;AAAA,IAAA;AAGvD,qBAAiB,UAAU,2BAA2B,IAAI,EAAE,OAAO;AAE5D,WAAA;AAAA,EAAA;AAAA,EAGT,MAAc,yBACZ,gBACA,SACA,YACA,OACA,gBACA,iBACA,SAGA,kBACe;AACX,QAAA,CAAC,KAAK,aAAa;AACrB,UAAI,kBAAkB;AACpB,yBAAiB,OAAO,8BAA8B;AAAA,MAAA;AAElD,YAAA,IAAI,MAAM,8BAA8B;AAAA,IAAA;AAG3C,SAAA,OAAO,KAAK,iCAAiC;AAC9C,QAAA,CAAC,MAAM,gBAAgB;AACzB,UAAI,kBAAkB;AACH,yBAAA;AAAA,UACf,kBAAkB,iBAAiB,UAAU,QAAQ;AAAA,UACrD;AAAA,QACF;AAAA,MAAA;AAGI,YAAA,kBAAkB,kBAAkB,kBAAkB;AAAA,QAC1D,YAAY;AAAA,QACZ,YAAY;AAAA,QACZ,WAAW;AAAA,MAAA,CACZ;AAEG,UAAA;AAEJ,UAAI,gBAAgB;AACZ,cAAA,eAAgB,QAAyB,MAAM;AAE/C,cAAA,cAAc,aAAa,UAAU,UACvC,OAAO,QAAQ,aAAa,SAAS,OAAO,EAAE;AAAA,UAC5C,CAAC,CAAC,UAAU,MAAM,OAAO;AAAA,YACvB;AAAA,YACA;AAAA,UACF;AAAA,QAAA,IAEF,CAAC;AAEL,uBAAe,KAAK,YAAY;AAAA,UAC9B,aAAa;AAAA,UACb,aAAa,UAAU,SAAS,WAAW,IAAI;AAAA,UAC/C,aAAa,gBAAgB,CAAC;AAAA,UAC9B,aAAa,UAAU,SAAS;AAAA,UAChC;AAAA,YACE,OAAO,aAAa,KAAK,YAAc,EAAA,QAAQ,QAAQ,GAAG;AAAA,YAC1D,KAAK,aAAa;AAAA,YAClB,cAAc,aAAa,WAAW,UAAU,KAAK;AAAA,YACrD,SAAS;AAAA,YACT,YAAY,aAAa,UAAU,cAAc,CAAC;AAAA,YAClD;AAAA,YACA;AAAA,YACA,SAAS,aAAa,UAAU;AAAA,UAAA;AAAA,QAEpC;AAAA,MAAA,OACK;AACC,cAAA,gBAAiB,QAA0B,MAAM;AAEvD,cAAM,EAAE,WAAW,aAAa,GAAG,aAAiB,IAAA;AAEpD,uBAAe,KAAK,YAAY;AAAA,UAC9B,cAAc;AAAA,UACd;AAAA,YACE,OAAO,cAAc;AAAA,YACrB,KAAK,cAAc;AAAA,YACnB,SAAS,cAAc;AAAA,YACvB,cAAc,aACV,WAAW,UAAU,KACrB,cAAc;AAAA,YAClB,YAAY,cAAc;AAAA,YAC1B;AAAA,YACA;AAAA,UAAA;AAAA,QAEJ;AAAA,MAAA;AAGI,YAAA,gBAAgB,MAAM,KAAK,YAAY;AAAA,QAC3C;AAAA,QACA,SAAS,qBAAqB;AAAA,QAC9B;AAAA,UACE,kBAAkB,CAAC,SACjB,iBAAiB,OAAO;AAAA,YACtB,GAAG;AAAA,YACH,iBAAiB,KAAK,mBAAmB;AAAA,UAC1C,CAAA;AAAA,QAAA;AAAA,MAEP;AAEI,UAAA,CAAC,cAAc,SAAS;AAC1B,YAAI,kBAAkB;AACH,2BAAA;AAAA,YACf,sBAAsB,iBAAiB,UAAU,QAAQ;AAAA,YACzD;AAAA,cACE,OAAO,cAAc;AAAA,YAAA;AAAA,UAEzB;AAAA,QAAA;AAGF,YAAI,eAAe,sBACjB,iBAAiB,UAAU,QAC7B;AACA,YAAI,cAAc,OAAO;AACvB,yBAAe,cAAc;AAAA,QAAA;AAEzB,cAAA,IAAI,MAAM,YAAY;AAAA,MAAA;AAG9B,YAAM,iBAAiB,cAAc;AAErC,UAAI,MAAM,kBAAkB;AAC1B,cAAM,iBAAiB,KAAK,WAAW,cAAc,cAAc,EAAE;AAAA,MAAA;AAGvE,UAAI,kBAAkB;AACpB,yBAAiB,UAAU,yBAAyB,IAAI,EAAE,OAAO;AAAA,MAAA;AAAA,eAE1D,kBAAkB;AACV,uBAAA;AAAA,QACf,kBAAkB,iBAAiB,UAAU,QAAQ;AAAA,QACrD;AAAA,QACA;AAAA,UACE;AAAA,QAAA;AAAA,MAEJ;AAAA,IAAA;AAAA,EACF;AAAA,EAGM,4BACN,gBACA,eACoB;AACpB,UAAM,QAAQ,iBAAiB;AAAA,MAC7B;AAAA,MACA,cAAc;AAAA,MACd,qBAAqB;AAAA,MACrB,kBAAkB,CAAA;AAAA,IACpB;AAEA,QACE,MAAM,iBAAiB,kBACvB,MAAM,iBAAiB,YACvB;AACA,YAAM,eAAe;AAAA,IAAA;AAGhB,WAAA;AAAA,EAAA;AAAA,EAGD,oCACN,OACA,gBACM;AACN,UAAM,eAAe;AACrB,UAAM,sBAAsB;AAC5B,QAAI,MAAM,kBAAkB;AAC1B,YAAM,iBAAiB,KAAK,gBAAgB,cAAc,EAAE;AAAA,IAAA;AAAA,EAC9D;AAAA,EAGF,MAAM,iCACJ,WACA,UAAkB,KAAK,SACvB,SAMkC;AAC9B,QAAA;AACG,WAAA,OAAO,KAAK,yCAAyC;AAE1D,YAAM,eAAe,MAAM,KAAK,gBAAgB,SAAS;AACnD,YAAA,iBAAiB,aAAa,UAAU;AAC9C,YAAM,QAAQ,KAAK;AAAA,QACjB;AAAA,QACA,SAAS;AAAA,MACX;AACM,YAAA,mBAAmB,IAAI,iBAAiB;AAAA,QAC5C,QAAQ;AAAA,QACR,QAAQ,KAAK;AAAA,QACb,UAAU,SAAS;AAAA,MAAA,CACpB;AAEgB,uBAAA,UAAU,gCAAgC,IAAI;AAAA,QAC7D;AAAA,QACA;AAAA,MAAA,CACD;AAEK,YAAA,qBAAqB,MAAM,KAAK;AAAA,QACpC;AAAA,QACA;AAAA,QACA,KAAK;AAAA,QACL,KAAK;AAAA,MACP;AAEI,UAAA,CAAC,mBAAmB,SAAS;AACxB,eAAA;AAAA,UACL,GAAG;AAAA,UACH;AAAA,QACF;AAAA,MAAA;AAGe,uBAAA,WAAW,uCAAuC,IAAI;AAAA,QACrE,eAAe,mBAAmB;AAAA,MAAA,CACnC;AAED,UAAI,mBAAmB,aAAa;AAClC,cAAM,cAAc,YAAY;AAAA,UAC9B,OAAO,KAAK,mBAAmB,aAAa,QAAQ;AAAA,QACtD;AAEK,aAAA,OAAO,KAAK,qCAAqC;AAChD,cAAA,WAAW,MAAM,KAAK,IAAI;AAAA,UAC9B;AAAA,UACA;AAAA,QACF;AAEA,YAAI,SAAS,OAAO;AACX,iBAAA;AAAA,YACL,GAAG;AAAA,YACH,OAAO,SAAS;AAAA,YAChB,SAAS;AAAA,YACT;AAAA,UACF;AAAA,QAAA;AAGG,aAAA,OAAO,KAAK,iDAAiD;AAAA,MAAA;AAGnD,uBAAA,WAAW,uCAAuC,IAAI;AAAA,QACrE;AAAA,QACA;AAAA,QACA,eAAe,mBAAmB;AAAA,MAAA,CACnC;AAEK,YAAA,cAAc,SAAS,eAAe;AACtC,YAAA,UAAU,SAAS,WAAW;AAE9B,YAAA,YAAY,MAAM,KAAK;AAAA,QAC3B,mBAAmB;AAAA,QACnB;AAAA,QACA,KAAK;AAAA,QACL;AAAA,QACA;AAAA,QACA,KAAK;AAAA,MACP;AAEK,WAAA,oCAAoC,OAAO,cAAc;AAE9D,uBAAiB,UAAU,+BAA+B;AAAA,QACxD,eAAe,mBAAmB;AAAA,QAClC;AAAA,QACA;AAAA,QACA;AAAA,MAAA,CACD;AAEM,aAAA;AAAA,QACL,GAAG;AAAA,QACH;AAAA,QACA;AAAA,MACF;AAAA,aACO,OAAY;AACnB,WAAK,OAAO,MAAM,uBAAuB,MAAM,OAAO,EAAE;AACjD,aAAA;AAAA,QACL,OAAO,8BAA8B,MAAM,OAAO;AAAA,QAClD,SAAS;AAAA,QACT,OAAO;AAAA,UACL,cAAc;AAAA,UACd,qBAAqB;AAAA,UACrB,OAAO,MAAM;AAAA,QAAA;AAAA,MAEjB;AAAA,IAAA;AAAA,EACF;AAAA,EAGF,MAAM,uBACJ,SACA,SAOkC;AAC9B,QAAA;AACI,YAAA,cAAc,QAAQ,MAAM;AAClC,YAAM,mBAAmB,SAAS;AAC5B,YAAA,mBAAmB,IAAI,iBAAiB;AAAA,QAC5C,QAAQ;AAAA,QACR,QAAQ,KAAK;AAAA,QACb,UAAU;AAAA,MAAA,CACX;AAEG,UAAA,QACF,SAAS,iBACR;AAAA,QACC,cAAc;AAAA,QACd,qBAAqB;AAAA,QACrB,kBAAkB,CAAA;AAAA,MACpB;AAEF,YAAM,gBAAgB,YAAY;AAEjB,uBAAA,UAAU,mCAAmC,GAAG;AAAA,QAC/D;AAAA,MAAA,CACD;AAGC,UAAA,MAAM,iBAAiB,cACvB,CAAC,MAAM,kBACP,CAAC,MAAM,mBACP,CAAC,MAAM,gBACP;AACA,cAAM,eAAe,MAAM,KAAK,OAAO,SAAS;AAAA,UAC9C,kBAAkB,CAAC,aAAkB;AAC7B,kBAAA,mBAAmB,SAAS,mBAAmB,KAAK;AAC1D,6BAAiB,OAAO;AAAA,cACtB,GAAG;AAAA,cACH,iBAAiB;AAAA,cACjB,SAAS;AAAA,gBACP,GAAG,SAAS;AAAA,gBACZ,OAAO,SAAS,SAAS,SAAS;AAAA,cAAA;AAAA,YACpC,CACD;AAAA,UACH;AAAA,UACA,eAAe;AAAA,UACf,mBAAmB;AAAA,QAAA,CACpB;AAEG,YAAA,EAAE,WAAW,eAAe;AACxB,gBAAA,IAAI,MAAM,oDAAoD;AAAA,QAAA;AAGlE,YAAA,CAAC,aAAa,SAAS;AACzB,gBAAM,IAAI;AAAA,YACR,aAAa,SAAS;AAAA,UACxB;AAAA,QAAA;AAGF,gBAAQ,aAAa;AACrB,cAAM,gBAAgB,YAAY;AAAA,MAAA;AAGnB,uBAAA;AAAA,QACf,0BAA0B,MAAM,YAAY,KAAK,MAAM,mBAAmB;AAAA,QAC1E;AAAA,QACA,EAAE,MAAM;AAAA,MACV;AAEA,YAAM,EAAE,UAAA,IAAc,KAAK,oBAAoB;AAE/C,UACE,MAAM,iBAAiB,cACvB,CAAC,MAAM,kBAAkB;AAAA,QACvB,gBAAgB,MAAM,cAAc;AAAA,MAAA,GAEtC;AACA,YAAI,SAAS,SAAS;AACpB,eAAK,yBAAyB,QAAQ;AAAA,QAAA;AAGlC,cAAA,qBAAqB,MAAM,KAAK;AAAA,UACpC;AAAA,UACA,YAAY;AAAA,UACZ;AAAA,YACE,kBAAkB,CAAC,aAAa;AAC9B,oBAAM,kBACJ,MAAM,SAAS,mBAAmB,KAAK;AACzC,+BAAiB,OAAO;AAAA,gBACtB,GAAG;AAAA,gBACH,iBAAiB;AAAA,gBACjB,SAAS;AAAA,kBACP,GAAG,SAAS;AAAA,kBACZ,OAAO,SAAS,SAAS,SAAS;AAAA,gBAAA;AAAA,cACpC,CACD;AAAA,YACH;AAAA,YACA,aAAa,SAAS;AAAA,YACtB,SAAS,SAAS;AAAA,YAClB,eAAe;AAAA,UAAA;AAAA,QAEnB;AAEI,YAAA,CAAC,mBAAmB,SAAS;AAC/B,gBAAM,IAAI;AAAA,YACR,mBAAmB,SAAS;AAAA,UAC9B;AAAA,QAAA;AAGF,gBAAQ,mBAAmB;AAE3B,YAAI,MAAM,gBAAgB;AACxB,gBAAM,KAAK,aAAa;AAAA,YACtB;AAAA,YACA,MAAM;AAAA,UACR;AAAA,QAAA;AAAA,MACF;AAGF,uBAAiB,UAAU,4CAA4C;AAAA,QACrE;AAAA,MAAA,CACD;AAEM,aAAA;AAAA,QACL,SAAS;AAAA,QACT;AAAA,QACA,UAAU;AAAA,UACR;AAAA,UACA,YAAY,GAAG,MAAM,cAAc,IAAI,SAAS;AAAA,UAChD,gBAAgB,MAAM;AAAA,UACtB,iBAAiB,MAAM;AAAA,UACvB,gBAAgB,MAAM;AAAA,UACtB,YAAY,MAAM;AAAA,UAClB,YAAY;AAAA,UACZ,GAAG,MAAM;AAAA,QAAA;AAAA,MAEb;AAAA,aACO,OAAY;AACnB,WAAK,OAAO;AAAA,QACV,wCAAwC,MAAM,OAAO;AAAA,MACvD;AACO,aAAA;AAAA,QACL,SAAS;AAAA,QACT,OAAO,wCAAwC,MAAM,OAAO;AAAA,QAC5D,OACE,SAAS,iBACR;AAAA,UACC,cAAc;AAAA,UACd,qBAAqB;AAAA,UACrB,OAAO,MAAM;AAAA,QAAA;AAAA,MAEnB;AAAA,IAAA;AAAA,EACF;AAAA,EAGF,MAAM,kBACJ,WACA,UACA,gBACA,iBACA,eAAyB,IACzB,WAAgC,CAAA,GAChC,WACA,aACA,oBACA,SAGoC;AAChC,QAAA;AACF,YAAM,mBAAmB,SAAS;AAC5B,YAAA,mBAAmB,IAAI,iBAAiB;AAAA,QAC5C,QAAQ;AAAA,QACR,QAAQ,KAAK;AAAA,QACb,UAAU;AAAA,MAAA,CACX;AAEgB,uBAAA,UAAU,gCAAgC,CAAC;AAE5D,UAAI,aAAa;AAEb,UAAA,CAAC,cAAc,aAAa,aAAa;AACrC,cAAA,cAAc,iBAAiB,kBAAkB;AAAA,UACrD,YAAY;AAAA,UACZ,YAAY;AAAA,UACZ,WAAW;AAAA,QAAA,CACZ;AAED,cAAM,YAAY,MAAM,KAAK,YAAY,WAAW,aAAa;AAAA,UAC/D,kBAAkB,CAAC,SAAS;AAC1B,wBAAY,OAAO;AAAA,cACjB,OAAO,KAAK;AAAA,cACZ,SAAS,KAAK;AAAA,cACd,iBAAiB,KAAK,mBAAmB;AAAA,cACzC,SAAS,KAAK;AAAA,YAAA,CACf;AAAA,UAAA;AAAA,QACH,CACD;AAEG,YAAA,CAAC,UAAU,SAAS;AACL,2BAAA;AAAA,YACf;AAAA,UACF;AAAA,QAAA,OACK;AACL,uBAAa,UAAU;AAAA,QAAA;AAAA,iBAEhB,oBAAoB;AACZ,yBAAA;AAAA,UACf,mCAAmC,kBAAkB;AAAA,UACrD;AAAA,QACF;AAAA,MAAA,OACK;AACY,yBAAA,UAAU,+BAA+B,EAAE;AAAA,MAAA;AAG1D,UAAA,CAAC,KAAK,aAAa;AACJ,yBAAA;AAAA,UACf;AAAA,QACF;AACO,eAAA;AAAA,UACL,gBAAgB;AAAA,UAChB,SAAS;AAAA,UACT,OAAO;AAAA,UACP,eAAe;AAAA,QACjB;AAAA,MAAA;AAGI,YAAA,YAAY,KAAK,YAAY,yBAAyB;AAAA,QAC1D,MAAM,SAAS,QAAQ;AAAA,MAAA,CACL;AAEH,uBAAA,UAAU,0BAA0B,EAAE;AAEjD,YAAA,mBAA6C,SAAS,UACxD,OAAO,QAAQ,SAAS,OAAO,EAC5B,OAAO,CAAC,CAAC,GAAG,MAAM,MAAM,MAAM,EAC9B,IAAI,CAAC,CAAC,UAAU,MAAM,OAAO;AAAA,QAC5B;AAAA,QACA;AAAA,MAAA,EACA,IACJ;AAEE,YAAA,UAAU,KAAK,YAAY;AAAA,QAC/B;AAAA,QACA;AAAA,QACA;AAAA,QACA,SAAS,SAAS;AAAA,QAClB;AAAA,UACE,OAAO,UAAU,YAAA,EAAc,QAAQ,QAAQ,GAAG;AAAA,UAClD,KAAK;AAAA,UACL,cAAc,aAAa,WAAW,UAAU,KAAK;AAAA,UACrD,SAAS;AAAA,UACT,YAAY;AAAA,YACV,SAAS,SAAS,WAAW;AAAA,YAC7B,SAAS,SAAS,WAAW;AAAA,YAC7B,qBAAqB,SAAS,uBAAuB,CAAC,IAAI;AAAA,YAC1D,aAAa,SAAS,eAAe,CAAC;AAAA,YACtC,eAAe,SAAS;AAAA,YACxB,UAAU,SAAS;AAAA,YACnB,0BAA0B,SAAS;AAAA,YACnC,GAAG;AAAA,UACL;AAAA,UACA;AAAA,UACA;AAAA,UACA,SAAS,SAAS;AAAA,QAAA;AAAA,MAEtB;AAEM,YAAA,kBAAkB,iBAAiB,kBAAkB;AAAA,QACzD,YAAY;AAAA,QACZ,YAAY;AAAA,QACZ,WAAW;AAAA,MAAA,CACZ;AAEK,YAAA,gBAAgB,MAAM,KAAK,YAAY;AAAA,QAC3C;AAAA,QACA;AAAA,QACA;AAAA,UACE,kBAAkB,CAAC,gBAAgB;AACjC,4BAAgB,OAAO;AAAA,cACrB,OAAO,YAAY;AAAA,cACnB,SAAS,YAAY;AAAA,cACrB,iBAAiB,YAAY,mBAAmB;AAAA,cAChD,SAAS,YAAY;AAAA,YAAA,CACtB;AAAA,UAAA;AAAA,QACH;AAAA,MAEJ;AAEI,UAAA,CAAC,cAAc,SAAS;AAC1B,yBAAiB,OAAO,4BAA4B;AAC7C,eAAA;AAAA,UACL,gBAAgB;AAAA,UAChB,SAAS;AAAA,UACT,OAAO,cAAc,SAAS;AAAA,UAC9B,eAAe,cAAc,iBAAiB;AAAA,QAChD;AAAA,MAAA;AAGF,uBAAiB,UAAU,+BAA+B;AAAA,QACxD,gBAAgB,cAAc;AAAA,MAAA,CAC/B;AAEM,aAAA;AAAA,QACL,gBAAgB,cAAc;AAAA,QAC9B;AAAA,QACA,SAAS;AAAA,QACT,eAAe,cAAc,iBAAiB;AAAA,MAChD;AAAA,aACO,OAAY;AACnB,WAAK,OAAO,MAAM,gCAAgC,MAAM,OAAO,EAAE;AAC1D,aAAA;AAAA,QACL,gBAAgB;AAAA,QAChB,SAAS;AAAA,QACT,OAAO,MAAM;AAAA,QACb,eAAe;AAAA,MACjB;AAAA,IAAA;AAAA,EACF;AAAA,EAGF,MAAM,YACJ,MACA,UACA,WAKC;AACI,SAAA,OAAO,KAAK,gBAAgB;AACjC,UAAM,EAAE,WAAW,WAAW,KAAK,oBAAoB;AAEvD,UAAM,cAAc,IAAI,yBAAyB,aAAa,IAAI;AAElE,UAAM,YAAY,MAAM,KAAK,WAAW,aAAa,SAAS;AAE9D,QAAI,YAAY,WAAW;AACzB,kBAAY,YAAY,SAAS;AACjC,kBAAY,sBAAsB,SAAS;AAAA,IAAA;AAG7C,QAAI,aAAa,WAAW;AAC1B,kBAAY,aAAa,SAAS;AAAA,IAAA;AAG9B,UAAA,sBACJ,MAAM,KAAK,IAAI;AAAA,MACb;AAAA,MACA;AAAA,IACF;AAEF,UAAM,QAAQ,oBAAoB;AAElC,QAAI,OAAO;AACJ,WAAA,OAAO,MAAM,KAAK;AAChB,aAAA;AAAA,QACL,SAAS;AAAA,QACT;AAAA,MACF;AAAA,IAAA;AAGF,UAAM,gBAAgB,oBAAoB;AAEtC,QAAA,CAAC,eAAe,SAAS;AACtB,WAAA,OAAO,MAAM,yCAAyC;AACpD,aAAA;AAAA,QACL,SAAS;AAAA,QACT,OAAO;AAAA,MACT;AAAA,IAAA;AAGK,WAAA;AAAA,MACL,SAAS;AAAA,MACT,SAAS,cAAc,QAAQ,SAAS;AAAA,IAC1C;AAAA,EAAA;AAAA,EAGF,MAAa,cACX,SACA,SACA,WACA,aAC6B;AAC7B,SAAK,OAAO,MAAM,+BAA+B,OAAO,EAAE;AAEtD,QAAA;AACA,QAAA,OAAO,YAAY,UAAU;AACrB,gBAAA;AAAA,IAAA,OACL;AACK,gBAAA,KAAK,UAAU,OAAO;AAAA,IAAA;AAG5B,UAAA,cAAc,IAAI,8BAA8B,EACnD,WAAW,OAAO,EAClB,WAAW,OAAO;AAEjB,QAAA;AAKJ,QAAI,aAAa;AACf,WAAK,OAAO;AAAA,QACV;AAAA,MACF;AACA,kBAAY,qBAAqB,IAAI,KAAK,KAAK,SAAS,CAAC;AAAA,IAAA;AAG3D,QAAI,WAAW;AACb,YAAM,EAAE,WAAW,WAAW,KAAK,oBAAoB;AACvD,kBAAY,iBAAiB,MAAa;AAC1C,YAAM,oBAAoB,MAAM,YAAY,KAAK,SAAS;AACpC,4BAAA,MAAM,KAAK,IAAI;AAAA,QACnC;AAAA,QACA;AAAA,MACF;AAAA,IAAA,OACK;AACiB,4BAAA,MAAM,KAAK,IAAI;AAAA,QACnC;AAAA,QACA;AAAA,MACF;AAAA,IAAA;AAGF,QAAI,qBAAqB,OAAO;AAC9B,WAAK,OAAO;AAAA,QACV,6BAA6B,oBAAoB,KAAK;AAAA,MACxD;AACA,YAAM,IAAI,MAAM,6BAA6B,oBAAoB,KAAK,EAAE;AAAA,IAAA;AAGtE,QAAA,CAAC,qBAAqB,QAAQ;AAChC,WAAK,OAAO;AAAA,QACV;AAAA,MACF;AACM,YAAA,IAAI,MAAM,wDAAwD;AAAA,IAAA;AAGrE,SAAA,OAAO,MAAM,wCAAwC;AAC1D,WAAO,oBAAoB;AAAA,EAAA;AAAA,EAG7B,MAAM,aACJ,QACA,UACA,SAKqC;AACrC,UAAM,EAAE,WAAW,WAAW,KAAK,oBAAoB;AAEvD,UAAM,WAAWA,iBAAAA,OAAY,QAAQ,KAAK;AAEpC,UAAA,MAAM,MAAM,eAAe,eAAe;AAAA,MAC9C,MAAM;AAAA,MACN;AAAA,MACA;AAAA,MACA,SAAS,KAAK;AAAA,IAAA,CACf;AAED,UAAM,qBAAqB;AAAA,MACzB,MAAM;AAAA,MACN,qBAAqB;AAAA,MACrB,iBAAiB,SAAS,mBAAmB;AAAA,MAC7C,gBAAgB,SAAS,kBAAkB;AAAA,MAC3C,kBAAkB,SAAS;AAAA,MAC3B,SAAS;AAAA,QACP,OAAO,KAAK,OAAO,WAAW,KAAK,OAAO,aAAa;AAAA,MAAA;AAAA,IAE3D;AAEA,UAAM,WAAW,MAAM;AAAA,MACrB;AAAA,QACE,MAAM;AAAA,QACN;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MACA;AAAA,MACA;AAAA,QACE,GAAG;AAAA,QACH,SAAS,KAAK;AAAA,MAChB;AAAA,MACA;AAAA,IACF;AAEA,QAAI,CAAC,SAAS,aAAa,CAAC,SAAS,aAAa;AAC1C,YAAA,IAAI,MAAM,+BAA+B;AAAA,IAAA;AAGjD,WAAO,SAAS;AAAA,EAAA;AAAA,EAGlB,sBAAmD;AAC3C,UAAA,cAAc,MAAM,KAAK,eAAe;AACxC,UAAA,YAAY,aAAa,WAAW,SAAS;AACnD,UAAM,SAAS,MAAM,KAAK,eAAe,SAAS,KAAK,CAAC,MAAM;AAC5D,aAAO,EAAE,eAAe,SAAe,MAAA;AAAA,IAAA,CACxC;AAED,QAAI,CAAC,QAAQ;AACN,WAAA,OAAO,MAAM,yBAAyB;AAAA,QACzC;AAAA,QACA,SAAS,MAAM,KAAK,eAAe;AAAA,QACnC;AAAA,MAAA,CACD;AACK,YAAA,IAAI,MAAM,uBAAuB;AAAA,IAAA;AAGlC,WAAA,EAAE,WAAW,OAAsB;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAW5C,MAAM,YACJ,QACA,UACA,SAG8B;AAC1B,QAAA;AACF,YAAM,mBAAmB,SAAS;AAC5B,YAAA,mBAAmB,IAAI,iBAAiB;AAAA,QAC5C,QAAQ;AAAA,QACR,QAAQ,KAAK;AAAA,QACb,UAAU;AAAA,MAAA,CACX;AAEG,UAAA,CAAC,KAAK,aAAa;AACJ,yBAAA;AAAA,UACf;AAAA,QACF;AACO,eAAA;AAAA,UACL,YAAY;AAAA,UACZ,SAAS;AAAA,UACT,OAAO;AAAA,UACP,eAAe;AAAA,QACjB;AAAA,MAAA;AAGe,uBAAA,UAAU,yCAAyC,EAAE;AACjE,WAAA,OAAO,KAAK,gDAAgD;AAE3D,YAAA,0BAA0B,CAAC,SAAc;AAC7C,yBAAiB,OAAO;AAAA,UACtB,OAAO,KAAK,SAAS;AAAA,UACrB,SAAS,KAAK,WAAW;AAAA,UACzB,iBAAiB,KAAK,mBAAmB;AAAA,UACzC,SAAS,KAAK;AAAA,QAAA,CACf;AAAA,MACH;AAEM,YAAA,cAAc,MAAM,KAAK,YAAY;AAAA,QACzC;AAAA,QACA;AAAA,QACA,EAAE,kBAAkB,wBAAwB;AAAA,MAC9C;AAEI,UAAA,CAAC,YAAY,SAAS;AACxB,YAAI,eAAe;AACnB,YAAI,YAAY,OAAO;AACrB,yBAAe,YAAY;AAAA,QAAA;AAG7B,YAAI,OAAO;AACX,YAAI,YAAY,eAAe;AAC7B,iBAAO,YAAY;AAAA,QAAA;AAGd,eAAA;AAAA,UACL,YAAY;AAAA,UACZ,SAAS;AAAA,UACT,OAAO;AAAA,UACP,eAAe;AAAA,QACjB;AAAA,MAAA;AAGF,uBAAiB,UAAU,0CAA0C;AAAA,QACnE,YAAY,YAAY;AAAA,MAAA,CACzB;AAED,WAAK,OAAO;AAAA,QACV,yDAAyD,YAAY,YAAY;AAAA,MACnF;AACO,aAAA;AAAA,QACL,YAAY,YAAY;AAAA,QACxB,SAAS;AAAA,QACT,eAAe,YAAY,iBAAiB;AAAA,MAC9C;AAAA,aACO,OAAY;AACnB,WAAK,OAAO,MAAM,qCAAqC,MAAM,OAAO,EAAE;AAC/D,aAAA;AAAA,QACL,YAAY;AAAA,QACZ,SAAS;AAAA,QACT,OAAO,MAAM;AAAA,QACb,eAAe;AAAA,MACjB;AAAA,IAAA;AAAA,EACF;AAAA,EAGF,MAAc,0BACZ,SAIA,kBAKC;AACG,QAAA,QACF,SAAS,iBACR;AAAA,MACC,cAAc;AAAA,MACd,qBAAqB;AAAA,MACrB,kBAAkB,CAAA;AAAA,IACpB;AAEF,QAAI,kBAAkB;AACH,uBAAA,UAAU,yCAAyC,GAAG;AAAA,QACrE;AAAA,MAAA,CACD;AAAA,IAAA;AAGH,UAAM,EAAE,UAAA,IAAc,KAAK,oBAAoB;AAC3C,QAAA,CAAC,MAAM,iBAAiB;AAC1B,YAAM,eAAe;AACrB,UAAI,kBAAkB;AACH,yBAAA,UAAU,2BAA2B,GAAG;AAAA,UACvD;AAAA,QAAA,CACD;AAAA,MAAA;AAEH,YAAM,eAAe,KAAK,mBAAmB,cAAc,UAAU;AAAA,QACnE,KAAK,SAAS;AAAA,QACd;AAAA,MAAA,CACD;AACD,YAAM,iBAAiB,MAAM,KAAK,YAAY,cAAc,MAAM,IAAI;AACtE,UAAI,CAAC,eAAe,WAAW,CAAC,eAAe,SAAS;AACtD,cAAM,IAAI;AAAA,UACR,eAAe,SAAS;AAAA,QAC1B;AAAA,MAAA;AAEF,YAAM,kBAAkB,eAAe;AACvC,UAAI,MAAM;AACR,cAAM,iBAAiB,KAAK,YAAY,MAAM,eAAe,EAAE;AAAA,IAAA;AAG/D,QAAA,CAAC,MAAM,gBAAgB;AACzB,YAAM,eAAe;AACrB,UAAI,kBAAkB;AACH,yBAAA,UAAU,0BAA0B,IAAI;AAAA,UACvD;AAAA,QAAA,CACD;AAAA,MAAA;AAEH,YAAM,cAAc,KAAK,mBAAmB,cAAc,SAAS;AAAA,QACjE,KAAK,SAAS;AAAA,QACd;AAAA,MAAA,CACD;AAED,YAAM,gBAAgB,MAAM,KAAK,YAAY,aAAa,MAAM,KAAK;AACrE,UAAI,CAAC,cAAc,WAAW,CAAC,cAAc,SAAS;AACpD,cAAM,IAAI;AAAA,UACR,cAAc,SAAS;AAAA,QACzB;AAAA,MAAA;AAEF,YAAM,iBAAiB,cAAc;AACrC,UAAI,MAAM;AACR,cAAM,iBAAiB,KAAK,WAAW,MAAM,cAAc,EAAE;AAAA,IAAA;AAG1D,WAAA;AAAA,MACL,gBAAgB,MAAM;AAAA,MACtB,iBAAiB,MAAM;AAAA,MACvB;AAAA,IACF;AAAA,EAAA;AAEJ;"}
1
+ {"version":3,"file":"standards-sdk.es8.js","sources":["../../src/hcs-10/browser.ts"],"sourcesContent":["import {\n KeyList,\n PublicKey,\n TopicCreateTransaction,\n TopicMessageSubmitTransaction,\n TransactionReceipt,\n PrivateKey,\n Hbar,\n AccountId,\n} from '@hashgraph/sdk';\nimport { HashinalsWalletConnectSDK } from '@hashgraphonline/hashinal-wc';\nimport { Logger, LogLevel } from '../utils/logger';\nimport {\n InscriptionSDK,\n RetrievedInscriptionResult,\n} from '@kiloscribe/inscription-sdk';\nimport { HCS10BaseClient } from './base-client';\nimport * as mime from 'mime-types';\nimport {\n AgentConfig,\n InscribePfpResponse,\n StoreHCS11ProfileResponse,\n AgentRegistrationResult,\n HandleConnectionRequestResponse,\n RegistrationProgressCallback,\n AgentCreationState,\n GetAccountAndSignerResponse,\n} from './types';\nimport {\n HCS11Client,\n AgentMetadata as AIAgentMetadata,\n InscribeProfileResponse,\n SocialLink,\n SocialPlatform,\n} from '../hcs-11';\nimport { ProgressReporter } from '../utils/progress-reporter';\nimport { Transaction } from '@hashgraph/sdk';\nimport { AgentBuilder } from '../hcs-11/agent-builder';\nimport { PersonBuilder } from '../hcs-11/person-builder';\nimport { Hcs10MemoType } from './base-client';\nimport { inscribeWithSigner } from '../inscribe/inscriber';\n\nconst isBrowser = typeof window !== 'undefined';\n\nexport type BrowserHCSClientConfig = {\n network: 'mainnet' | 'testnet';\n hwc: HashinalsWalletConnectSDK;\n logLevel?: LogLevel;\n prettyPrint?: boolean;\n guardedRegistryTopicId?: string;\n guardedRegistryBaseUrl?: string;\n feeAmount?: number;\n};\n\ninterface SocialLinks {\n x?: string;\n discord?: string;\n github?: string;\n website?: string;\n}\n\nexport type BrowserAgentConfig = Omit<\n AgentConfig<BrowserHCSClient>,\n 'privateKey'\n> & {\n client: BrowserHCSClient;\n};\n\nexport type RegisteredAgent = {\n outboundTopicId: string;\n inboundTopicId: string;\n pfpTopicId: string;\n profileTopicId: string;\n error?: string;\n success: boolean;\n state: AgentCreationState;\n};\n\nexport class BrowserHCSClient extends HCS10BaseClient {\n private hwc: HashinalsWalletConnectSDK;\n protected declare logger: Logger;\n private guardedRegistryBaseUrl: string;\n private hcs11Client: HCS11Client | null = null;\n\n constructor(config: BrowserHCSClientConfig) {\n super({\n network: config.network,\n logLevel: config.logLevel,\n prettyPrint: config.prettyPrint,\n feeAmount: config.feeAmount,\n });\n\n this.hwc = config.hwc;\n if (!config.guardedRegistryBaseUrl) {\n this.guardedRegistryBaseUrl = 'https://moonscape.tech';\n } else {\n this.guardedRegistryBaseUrl = config.guardedRegistryBaseUrl;\n }\n\n let logLevel: LogLevel;\n if (config.logLevel) {\n logLevel = config.logLevel;\n } else {\n logLevel = 'info';\n }\n\n this.logger = Logger.getInstance({\n level: logLevel,\n module: 'HCS-Browser',\n prettyPrint: config.prettyPrint,\n });\n\n if (isBrowser) {\n try {\n const { accountId, signer } = this.getAccountAndSigner();\n\n this.hcs11Client = new HCS11Client({\n network: config.network,\n auth: {\n operatorId: accountId,\n signer: signer as any,\n },\n logLevel: config.logLevel,\n });\n } catch (err) {\n this.logger.warn(`Failed to initialize HCS11Client: ${err}`);\n }\n } else {\n this.logger.error(\n 'BrowserHCSClient initialized in server environment - browser-specific features will not be available. Use HCS10Client instead.'\n );\n }\n }\n\n async sendMessage(\n connectionTopicId: string,\n data: string,\n memo?: string,\n submitKey?: PrivateKey,\n options?: {\n progressCallback?: RegistrationProgressCallback;\n waitMaxAttempts?: number;\n waitIntervalMs?: number;\n }\n ): Promise<TransactionReceipt> {\n this.logger.info('Sending message');\n const operatorId = await this.getOperatorId();\n\n const payload = {\n p: 'hcs-10',\n op: 'message',\n operator_id: operatorId,\n data,\n m: memo,\n };\n\n const submissionCheck = await this.canSubmitToTopic(\n connectionTopicId,\n this.hwc.getAccountInfo().accountId\n );\n\n const payloadString = JSON.stringify(payload);\n const isLargePayload = Buffer.from(payloadString).length > 1000;\n\n if (isLargePayload) {\n this.logger.info(\n 'Message payload exceeds 1000 bytes, storing via inscription'\n );\n try {\n const contentBuffer = Buffer.from(data);\n const fileName = `message-${Date.now()}.json`;\n const inscriptionResult = await this.inscribeFile(\n contentBuffer,\n fileName,\n {\n progressCallback: options?.progressCallback,\n waitMaxAttempts: options?.waitMaxAttempts,\n waitIntervalMs: options?.waitIntervalMs,\n }\n );\n\n if (inscriptionResult?.topic_id) {\n payload.data = `hcs://1/${inscriptionResult.topic_id}`;\n this.logger.info(\n `Large message inscribed with topic ID: ${inscriptionResult.topic_id}`\n );\n } else {\n throw new Error('Failed to inscribe large message content');\n }\n } catch (error) {\n this.logger.error('Error inscribing large message:', error);\n throw new Error(\n `Failed to handle large message: ${\n error instanceof Error ? error.message : 'Unknown error'\n }`\n );\n }\n }\n\n return await this.submitPayload(\n connectionTopicId,\n payload,\n submitKey,\n submissionCheck.requiresFee\n );\n }\n\n async getPublicKey(accountId: string): Promise<PublicKey> {\n return await this.mirrorNode.getPublicKey(accountId);\n }\n\n async handleConnectionRequest(\n inboundTopicId: string,\n requestingAccountId: string,\n connectionId: number,\n connectionMemo: string = 'Connection accepted. Looking forward to collaborating!',\n ttl: number = 60\n ): Promise<HandleConnectionRequestResponse> {\n this.logger.info('Handling connection request');\n const userAccountId = this.hwc.getAccountInfo().accountId;\n if (!userAccountId) {\n throw new Error('Failed to retrieve user account ID');\n }\n\n const requesterKey = await this.mirrorNode.getPublicKey(\n requestingAccountId\n );\n const accountKey = await this.mirrorNode.getPublicKey(userAccountId);\n\n if (!accountKey) {\n throw new Error('Failed to retrieve public key');\n }\n\n const thresholdKey = new KeyList([accountKey, requesterKey], 1);\n const memo = this._generateHcs10Memo(Hcs10MemoType.CONNECTION, {\n ttl,\n inboundTopicId,\n connectionId,\n });\n\n const transaction = new TopicCreateTransaction()\n .setTopicMemo(memo)\n .setAutoRenewAccountId(AccountId.fromString(userAccountId))\n .setAdminKey(thresholdKey)\n .setSubmitKey(thresholdKey);\n\n this.logger.debug('Executing topic creation transaction');\n const txResponse = await this.hwc.executeTransactionWithErrorHandling(\n transaction,\n false\n );\n if (txResponse?.error) {\n this.logger.error(txResponse.error);\n throw new Error(txResponse.error);\n }\n\n const resultReceipt = txResponse?.result;\n if (!resultReceipt?.topicId) {\n this.logger.error('Failed to create topic: topicId is null');\n throw new Error('Failed to create topic: topicId is null');\n }\n\n const connectionTopicId = resultReceipt.topicId.toString();\n const operatorId = `${inboundTopicId}@${userAccountId}`;\n const confirmedConnectionSequenceNumber = await this.confirmConnection(\n inboundTopicId,\n connectionTopicId,\n requestingAccountId,\n connectionId,\n operatorId,\n connectionMemo\n );\n\n const accountTopics = await this.retrieveCommunicationTopics(userAccountId);\n\n const requestingAccountTopics = await this.retrieveCommunicationTopics(\n requestingAccountId\n );\n\n const requestingAccountOperatorId = `${requestingAccountTopics.inboundTopic}@${requestingAccountId}`;\n\n await this.recordOutboundConnectionConfirmation({\n outboundTopicId: accountTopics.outboundTopic,\n requestorOutboundTopicId: requestingAccountTopics.outboundTopic,\n connectionRequestId: connectionId,\n confirmedRequestId: confirmedConnectionSequenceNumber,\n connectionTopicId,\n operatorId: requestingAccountOperatorId,\n memo: `Connection established with ${requestingAccountId}`,\n });\n\n return {\n connectionTopicId,\n confirmedConnectionSequenceNumber,\n operatorId,\n };\n }\n\n async confirmConnection(\n inboundTopicId: string,\n connectionTopicId: string,\n connectedAccountId: string,\n connectionId: number,\n operatorId: string,\n memo: string\n ): Promise<number> {\n this.logger.info('Confirming connection');\n const payload = {\n p: 'hcs-10',\n op: 'connection_created',\n connection_topic_id: connectionTopicId,\n connected_account_id: connectedAccountId,\n operator_id: operatorId,\n connection_id: connectionId,\n m: memo,\n };\n\n const transactionResponse = await this.submitPayload(\n inboundTopicId,\n payload\n );\n if (!transactionResponse?.topicSequenceNumber) {\n this.logger.error(\n 'Failed to confirm connection: sequence number is null'\n );\n throw new Error('Failed to confirm connection: sequence number is null');\n }\n return transactionResponse.topicSequenceNumber.toNumber();\n }\n\n async create(\n builder: AgentBuilder | PersonBuilder,\n options?: {\n progressCallback?: RegistrationProgressCallback;\n existingState?: AgentCreationState;\n ttl?: number;\n updateAccountMemo?: boolean;\n }\n ): Promise<RegisteredAgent | InscribeProfileResponse> {\n const progressCallback = options?.progressCallback;\n const progressReporter = new ProgressReporter({\n module: 'ProfileCreate',\n logger: this.logger,\n callback: progressCallback as any,\n });\n\n try {\n const isAgentBuilder = builder instanceof AgentBuilder;\n\n let state;\n if (options?.existingState) {\n state = options.existingState;\n } else {\n state = {\n currentStage: 'init',\n completedPercentage: 0,\n createdResources: [],\n } as AgentCreationState;\n }\n\n if (isAgentBuilder) {\n this.logger.info('Creating Agent Profile and HCS-10 Topics');\n const agentConfig = (builder as AgentBuilder).build();\n state.agentMetadata = agentConfig.metadata;\n } else {\n this.logger.info('Creating Person HCS-11 Profile');\n }\n\n progressReporter.preparing(\n `Starting ${isAgentBuilder ? 'agent' : 'person'} resource creation`,\n 0,\n {\n state,\n }\n );\n\n const {\n inboundTopicId,\n outboundTopicId,\n state: updatedState,\n } = await this.createCommunicationTopics(options, progressReporter);\n\n state = updatedState;\n\n if (!isAgentBuilder) {\n (builder as PersonBuilder).setInboundTopicId(inboundTopicId);\n (builder as PersonBuilder).setOutboundTopicId(outboundTopicId);\n }\n\n let pfpTopicId: string | undefined;\n let hasPfpBuffer: Buffer | undefined;\n let pfpFileName: string | undefined;\n\n if (isAgentBuilder) {\n const agentProfile = (builder as AgentBuilder).build();\n pfpTopicId = agentProfile.existingPfpTopicId || state.pfpTopicId;\n hasPfpBuffer = agentProfile.pfpBuffer;\n pfpFileName = agentProfile.pfpFileName || 'pfp.png';\n } else {\n const personProfile = (builder as PersonBuilder).build();\n pfpTopicId = state.pfpTopicId;\n hasPfpBuffer = personProfile.pfpBuffer;\n pfpFileName = personProfile.pfpFileName;\n }\n\n if (!pfpTopicId && hasPfpBuffer && pfpFileName) {\n pfpTopicId = await this.handleProfilePictureCreation(\n hasPfpBuffer,\n pfpFileName,\n state,\n progressReporter\n );\n } else if (pfpTopicId) {\n progressReporter.preparing(\n `Using existing profile picture: ${pfpTopicId}`,\n 50,\n { state }\n );\n state.pfpTopicId = pfpTopicId;\n }\n\n await this.createAndInscribeProfile(\n isAgentBuilder,\n builder as any,\n pfpTopicId,\n state,\n inboundTopicId,\n outboundTopicId,\n options,\n progressReporter\n );\n\n state.currentStage = 'complete';\n state.completedPercentage = 100;\n progressReporter.completed(\n `${isAgentBuilder ? 'Agent' : 'Person'} profile created successfully`,\n {\n profileTopicId: state.profileTopicId,\n inboundTopicId,\n outboundTopicId,\n pfpTopicId,\n state,\n }\n );\n\n let outTopicId = '';\n if (state.outboundTopicId) {\n outTopicId = state.outboundTopicId;\n }\n\n let inTopicId = '';\n if (state.inboundTopicId) {\n inTopicId = state.inboundTopicId;\n }\n\n let profilePicTopicId = '';\n if (state.pfpTopicId) {\n profilePicTopicId = state.pfpTopicId;\n }\n\n let profTopicId = '';\n if (state.profileTopicId) {\n profTopicId = state.profileTopicId;\n }\n\n return {\n outboundTopicId: outTopicId,\n inboundTopicId: inTopicId,\n pfpTopicId: profilePicTopicId,\n profileTopicId: profTopicId,\n success: true,\n state,\n } as RegisteredAgent | InscribeProfileResponse;\n } catch (error: any) {\n progressReporter.failed('Error during profile creation', {\n error: error.message,\n });\n return {\n outboundTopicId: '',\n inboundTopicId: '',\n pfpTopicId: '',\n profileTopicId: '',\n success: false,\n error: error.message,\n state: {\n currentStage: 'init',\n completedPercentage: 0,\n error: error.message,\n } as AgentCreationState,\n } as RegisteredAgent;\n }\n }\n\n private async handleProfilePictureCreation(\n pfpBuffer: Buffer,\n pfpFileName: string,\n state: AgentCreationState,\n progressReporter: ProgressReporter\n ): Promise<string> {\n state.currentStage = 'pfp';\n progressReporter.preparing('Creating profile picture', 30, {\n state,\n });\n\n const pfpProgress = progressReporter.createSubProgress({\n minPercent: 30,\n maxPercent: 50,\n logPrefix: 'PFP',\n });\n\n const pfpResult = await this.inscribePfp(pfpBuffer, pfpFileName, {\n progressCallback: (data) =>\n pfpProgress.report({\n ...data,\n progressPercent: data.progressPercent ?? 0,\n details: { ...data.details, state },\n }),\n });\n\n if (!pfpResult.success) {\n let errorMessage = 'Failed to inscribe profile picture';\n if (pfpResult.error) {\n errorMessage = pfpResult.error;\n }\n throw new Error(errorMessage);\n }\n\n const pfpTopicId = pfpResult.pfpTopicId;\n state.pfpTopicId = pfpTopicId;\n\n if (state.createdResources) {\n state.createdResources.push(`pfp:${state.pfpTopicId}`);\n }\n\n progressReporter.preparing('Profile picture created', 50, { state });\n\n return pfpTopicId;\n }\n\n private async createAndInscribeProfile(\n isAgentBuilder: boolean,\n builder: AgentBuilder | PersonBuilder,\n pfpTopicId: string | undefined,\n state: AgentCreationState,\n inboundTopicId: string,\n outboundTopicId: string,\n options?: {\n updateAccountMemo?: boolean;\n },\n progressReporter?: ProgressReporter\n ): Promise<void> {\n if (!this.hcs11Client) {\n if (progressReporter) {\n progressReporter.failed('HCS11Client is not available');\n }\n throw new Error('HCS11Client is not available');\n }\n\n this.logger.info('Creating and inscribing profile');\n if (!state.profileTopicId) {\n if (progressReporter) {\n progressReporter.preparing(\n `Storing HCS-11 ${isAgentBuilder ? 'agent' : 'person'} profile`,\n 80\n );\n }\n\n const profileProgress = progressReporter?.createSubProgress({\n minPercent: 80,\n maxPercent: 95,\n logPrefix: 'StoreProfile',\n });\n\n let hcs11Profile;\n\n if (isAgentBuilder) {\n const agentProfile = (builder as AgentBuilder).build();\n\n const socialLinks = agentProfile.metadata?.socials\n ? Object.entries(agentProfile.metadata.socials).map(\n ([platform, handle]) => ({\n platform: platform as SocialPlatform,\n handle: handle as string,\n })\n )\n : [];\n\n hcs11Profile = this.hcs11Client.createAIAgentProfile(\n agentProfile.name,\n agentProfile.metadata?.type === 'manual' ? 0 : 1,\n agentProfile.capabilities || [],\n agentProfile.metadata?.model || 'unknown',\n {\n alias: agentProfile.name.toLowerCase().replace(/\\s+/g, '_'),\n bio: agentProfile.bio,\n profileImage: pfpTopicId ? `hcs://1/${pfpTopicId}` : undefined,\n socials: socialLinks,\n properties: agentProfile.metadata?.properties || {},\n inboundTopicId,\n outboundTopicId,\n creator: agentProfile.metadata?.creator,\n }\n );\n } else {\n const personProfile = (builder as PersonBuilder).build();\n\n const { pfpBuffer, pfpFileName, ...cleanProfile } = personProfile;\n\n hcs11Profile = this.hcs11Client.createPersonalProfile(\n personProfile.display_name,\n {\n alias: personProfile.alias,\n bio: personProfile.bio,\n socials: personProfile.socials,\n profileImage: pfpTopicId\n ? `hcs://1/${pfpTopicId}`\n : personProfile.profileImage,\n properties: personProfile.properties,\n inboundTopicId,\n outboundTopicId,\n }\n );\n }\n\n const profileResult = await this.hcs11Client.createAndInscribeProfile(\n hcs11Profile,\n options?.updateAccountMemo ?? true,\n {\n progressCallback: (data) =>\n profileProgress?.report({\n ...data,\n progressPercent: data.progressPercent ?? 0,\n }),\n }\n );\n\n if (!profileResult.success) {\n if (progressReporter) {\n progressReporter.failed(\n `Failed to inscribe ${isAgentBuilder ? 'agent' : 'person'} profile`,\n {\n error: profileResult.error,\n }\n );\n }\n\n let errorMessage = `Failed to inscribe ${\n isAgentBuilder ? 'agent' : 'person'\n } profile`;\n if (profileResult.error) {\n errorMessage = profileResult.error;\n }\n throw new Error(errorMessage);\n }\n\n state.profileTopicId = profileResult.profileTopicId;\n\n if (state.createdResources) {\n state.createdResources.push(`profile:${profileResult.profileTopicId}`);\n }\n\n if (progressReporter) {\n progressReporter.preparing('HCS-11 Profile stored', 95, { state });\n }\n } else if (progressReporter) {\n progressReporter.preparing(\n `Using existing ${isAgentBuilder ? 'agent' : 'person'} profile`,\n 95,\n {\n state,\n }\n );\n }\n }\n\n private initializeRegistrationState(\n inboundTopicId: string,\n existingState?: AgentCreationState\n ): AgentCreationState {\n const state = existingState || {\n inboundTopicId,\n currentStage: 'registration',\n completedPercentage: 0,\n createdResources: [],\n };\n\n if (\n state.currentStage !== 'registration' &&\n state.currentStage !== 'complete'\n ) {\n state.currentStage = 'registration';\n }\n\n return state;\n }\n\n private updateStateForCompletedRegistration(\n state: AgentCreationState,\n inboundTopicId: string\n ): void {\n state.currentStage = 'complete';\n state.completedPercentage = 100;\n if (state.createdResources) {\n state.createdResources.push(`registration:${inboundTopicId}`);\n }\n }\n\n async registerAgentWithGuardedRegistry(\n accountId: string,\n network: string = this.network,\n options?: {\n progressCallback?: RegistrationProgressCallback;\n maxAttempts?: number;\n delayMs?: number;\n existingState?: AgentCreationState;\n }\n ): Promise<AgentRegistrationResult> {\n try {\n this.logger.info('Registering agent with guarded registry');\n\n const agentProfile = await this.retrieveProfile(accountId);\n const inboundTopicId = agentProfile.topicInfo.inboundTopic;\n const state = this.initializeRegistrationState(\n inboundTopicId,\n options?.existingState\n );\n const progressReporter = new ProgressReporter({\n module: 'AgentRegistration',\n logger: this.logger,\n callback: options?.progressCallback,\n });\n\n progressReporter.preparing('Preparing agent registration', 10, {\n inboundTopicId,\n accountId,\n });\n\n const registrationResult = await this.executeRegistration(\n accountId,\n network as string,\n this.guardedRegistryBaseUrl,\n this.logger\n );\n\n if (!registrationResult.success) {\n return {\n ...registrationResult,\n state,\n };\n }\n\n progressReporter.submitting('Submitting registration to registry', 30, {\n transactionId: registrationResult.transactionId,\n });\n\n if (registrationResult.transaction) {\n const transaction = Transaction.fromBytes(\n Buffer.from(registrationResult.transaction, 'base64')\n );\n\n this.logger.info(`Processing registration transaction`);\n const txResult = await this.hwc.executeTransactionWithErrorHandling(\n transaction as any,\n true\n );\n\n if (txResult.error) {\n return {\n ...registrationResult,\n error: txResult.error,\n success: false,\n state,\n };\n }\n\n this.logger.info(`Successfully processed registration transaction`);\n }\n\n progressReporter.confirming('Confirming registration transaction', 60, {\n accountId,\n inboundTopicId,\n transactionId: registrationResult.transactionId,\n });\n\n const maxAttempts = options?.maxAttempts ?? 60;\n const delayMs = options?.delayMs ?? 2000;\n\n const confirmed = await this.waitForRegistrationConfirmation(\n registrationResult.transactionId!,\n network,\n this.guardedRegistryBaseUrl,\n maxAttempts,\n delayMs,\n this.logger\n );\n\n this.updateStateForCompletedRegistration(state, inboundTopicId);\n\n progressReporter.completed('Agent registration complete', {\n transactionId: registrationResult.transactionId,\n inboundTopicId,\n state,\n confirmed,\n });\n\n return {\n ...registrationResult,\n confirmed,\n state,\n };\n } catch (error: any) {\n this.logger.error(`Registration error: ${error.message}`);\n return {\n error: `Error during registration: ${error.message}`,\n success: false,\n state: {\n currentStage: 'registration',\n completedPercentage: 0,\n error: error.message,\n },\n };\n }\n }\n\n async createAndRegisterAgent(\n builder: AgentBuilder,\n options?: {\n progressCallback?: RegistrationProgressCallback;\n maxAttempts?: number;\n delayMs?: number;\n existingState?: AgentCreationState;\n baseUrl?: string;\n }\n ): Promise<AgentRegistrationResult> {\n try {\n const agentConfig = builder.build();\n const progressCallback = options?.progressCallback;\n const progressReporter = new ProgressReporter({\n module: 'AgentCreateRegister',\n logger: this.logger,\n callback: progressCallback as any,\n });\n\n let state =\n options?.existingState ||\n ({\n currentStage: 'init',\n completedPercentage: 0,\n createdResources: [],\n } as AgentCreationState);\n\n state.agentMetadata = agentConfig.metadata;\n\n progressReporter.preparing('Starting agent creation process', 0, {\n state,\n });\n\n if (\n state.currentStage !== 'complete' ||\n !state.inboundTopicId ||\n !state.outboundTopicId ||\n !state.profileTopicId\n ) {\n const createResult = await this.create(builder, {\n progressCallback: (progress: any) => {\n const adjustedPercent = (progress.progressPercent || 0) * 0.3;\n progressReporter.report({\n ...progress,\n progressPercent: adjustedPercent,\n details: {\n ...progress.details,\n state: progress.details?.state || state,\n },\n });\n },\n existingState: state,\n updateAccountMemo: false,\n });\n\n if (!('state' in createResult)) {\n throw new Error('Create method did not return expected agent state.');\n }\n\n if (!createResult.success) {\n throw new Error(\n createResult.error || 'Failed to create agent resources'\n );\n }\n\n state = createResult.state;\n state.agentMetadata = agentConfig.metadata;\n }\n\n progressReporter.preparing(\n `Agent creation status: ${state.currentStage}, ${state.completedPercentage}%`,\n 30,\n { state }\n );\n\n const { accountId } = this.getAccountAndSigner();\n\n if (\n state.currentStage !== 'complete' ||\n !state.createdResources?.includes(\n `registration:${state.inboundTopicId}`\n )\n ) {\n if (options?.baseUrl) {\n this.guardedRegistryBaseUrl = options.baseUrl;\n }\n\n const registrationResult = await this.registerAgentWithGuardedRegistry(\n accountId,\n agentConfig.network,\n {\n progressCallback: (progress) => {\n const adjustedPercent =\n 30 + (progress.progressPercent || 0) * 0.7;\n progressReporter.report({\n ...progress,\n progressPercent: adjustedPercent,\n details: {\n ...progress.details,\n state: progress.details?.state || state,\n },\n });\n },\n maxAttempts: options?.maxAttempts,\n delayMs: options?.delayMs,\n existingState: state,\n }\n );\n\n if (!registrationResult.success) {\n throw new Error(\n registrationResult.error || 'Failed to register agent with registry'\n );\n }\n\n state = registrationResult.state;\n\n if (state.profileTopicId) {\n await this.hcs11Client?.updateAccountMemoWithProfile(\n accountId,\n state.profileTopicId\n );\n }\n }\n\n progressReporter.completed('Agent creation and registration complete', {\n state,\n });\n\n return {\n success: true,\n state,\n metadata: {\n accountId,\n operatorId: `${state.inboundTopicId}@${accountId}`,\n inboundTopicId: state.inboundTopicId!,\n outboundTopicId: state.outboundTopicId!,\n profileTopicId: state.profileTopicId!,\n pfpTopicId: state.pfpTopicId!,\n privateKey: null,\n ...state.agentMetadata,\n },\n };\n } catch (error: any) {\n this.logger.error(\n `Failed to create and register agent: ${error.message}`\n );\n return {\n success: false,\n error: `Failed to create and register agent: ${error.message}`,\n state:\n options?.existingState ||\n ({\n currentStage: 'init',\n completedPercentage: 0,\n error: error.message,\n } as AgentCreationState),\n };\n }\n }\n\n async storeHCS11Profile(\n agentName: string,\n agentBio: string,\n inboundTopicId: string,\n outboundTopicId: string,\n capabilities: number[] = [],\n metadata: Record<string, any> = {},\n pfpBuffer?: Buffer,\n pfpFileName?: string,\n existingPfpTopicId?: string,\n options?: {\n progressCallback?: RegistrationProgressCallback;\n }\n ): Promise<StoreHCS11ProfileResponse> {\n try {\n const progressCallback = options?.progressCallback;\n const progressReporter = new ProgressReporter({\n module: 'StoreHCS11Profile',\n logger: this.logger,\n callback: progressCallback as any,\n });\n\n progressReporter.preparing('Preparing agent profile data', 0);\n\n let pfpTopicId = existingPfpTopicId;\n\n if (!pfpTopicId && pfpBuffer && pfpFileName) {\n const pfpProgress = progressReporter.createSubProgress({\n minPercent: 0,\n maxPercent: 60,\n logPrefix: 'PFP',\n });\n\n const pfpResult = await this.inscribePfp(pfpBuffer, pfpFileName, {\n progressCallback: (data) => {\n pfpProgress.report({\n stage: data.stage,\n message: data.message,\n progressPercent: data.progressPercent || 0,\n details: data.details,\n });\n },\n });\n\n if (!pfpResult.success) {\n progressReporter.failed(\n 'Failed to inscribe profile picture, continuing without PFP'\n );\n } else {\n pfpTopicId = pfpResult.pfpTopicId;\n }\n } else if (existingPfpTopicId) {\n progressReporter.preparing(\n `Using existing profile picture: ${existingPfpTopicId}`,\n 30\n );\n } else {\n progressReporter.preparing('No profile picture provided', 30);\n }\n\n if (!this.hcs11Client) {\n progressReporter.failed(\n 'HCS11Client is not available in this environment'\n );\n return {\n profileTopicId: '',\n success: false,\n error: 'HCS11Client is not available in this environment',\n transactionId: '',\n };\n }\n\n const agentType = this.hcs11Client.getAgentTypeFromMetadata({\n type: metadata.type || 'autonomous',\n } as AIAgentMetadata);\n\n progressReporter.preparing('Building agent profile', 65);\n\n const formattedSocials: SocialLink[] | undefined = metadata.socials\n ? Object.entries(metadata.socials)\n .filter(([_, handle]) => handle)\n .map(([platform, handle]) => ({\n platform: platform as SocialPlatform,\n handle: handle as string,\n }))\n : undefined;\n\n const profile = this.hcs11Client.createAIAgentProfile(\n agentName,\n agentType,\n capabilities,\n metadata.model || 'unknown',\n {\n alias: agentName.toLowerCase().replace(/\\s+/g, '_'),\n bio: agentBio,\n profileImage: pfpTopicId ? `hcs://1/${pfpTopicId}` : undefined,\n socials: formattedSocials,\n properties: {\n version: metadata.version || '1.0.0',\n creator: metadata.creator || 'Unknown',\n supported_languages: metadata.supported_languages || ['en'],\n permissions: metadata.permissions || [],\n model_details: metadata.model_details,\n training: metadata.training,\n capabilities_description: metadata.capabilities_description,\n ...metadata,\n },\n inboundTopicId,\n outboundTopicId,\n creator: metadata.creator,\n }\n );\n\n const profileProgress = progressReporter.createSubProgress({\n minPercent: 65,\n maxPercent: 100,\n logPrefix: 'Profile',\n });\n\n const profileResult = await this.hcs11Client.createAndInscribeProfile(\n profile,\n true,\n {\n progressCallback: (profileData) => {\n profileProgress.report({\n stage: profileData.stage,\n message: profileData.message,\n progressPercent: profileData.progressPercent || 0,\n details: profileData.details,\n });\n },\n }\n );\n\n if (!profileResult.success) {\n progressReporter.failed('Failed to inscribe profile');\n return {\n profileTopicId: '',\n success: false,\n error: profileResult.error || 'Failed to inscribe profile',\n transactionId: profileResult.transactionId || '',\n };\n }\n\n progressReporter.completed('Profile stored successfully', {\n profileTopicId: profileResult.profileTopicId,\n });\n\n return {\n profileTopicId: profileResult.profileTopicId,\n pfpTopicId,\n success: true,\n transactionId: profileResult.transactionId || '',\n };\n } catch (error: any) {\n this.logger.error(`Error storing HCS11 profile: ${error.message}`);\n return {\n profileTopicId: '',\n success: false,\n error: error.message,\n transactionId: '',\n };\n }\n }\n\n async createTopic(\n memo: string,\n adminKey?: boolean,\n submitKey?: boolean\n ): Promise<{\n success: boolean;\n topicId?: string;\n error?: string;\n }> {\n this.logger.info('Creating topic');\n const { accountId, signer } = this.getAccountAndSigner();\n\n const transaction = new TopicCreateTransaction().setTopicMemo(memo);\n\n const publicKey = await this.mirrorNode.getPublicKey(accountId);\n\n if (adminKey && publicKey) {\n transaction.setAdminKey(publicKey);\n transaction.setAutoRenewAccountId(accountId);\n }\n\n if (submitKey && publicKey) {\n transaction.setSubmitKey(publicKey);\n }\n\n const transactionResponse =\n await this.hwc.executeTransactionWithErrorHandling(\n transaction as any,\n false\n );\n\n const error = transactionResponse.error;\n\n if (error) {\n this.logger.error(error);\n return {\n success: false,\n error,\n };\n }\n\n const resultReceipt = transactionResponse.result;\n\n if (!resultReceipt?.topicId) {\n this.logger.error('Failed to create topic: topicId is null');\n return {\n success: false,\n error: 'Failed to create topic: topicId is null',\n };\n }\n\n return {\n success: true,\n topicId: resultReceipt.topicId.toString(),\n };\n }\n\n public async submitPayload(\n topicId: string,\n payload: object | string,\n submitKey?: PrivateKey,\n requiresFee?: boolean\n ): Promise<TransactionReceipt> {\n this.logger.debug(`Submitting payload to topic ${topicId}`);\n\n let message: string;\n if (typeof payload === 'string') {\n message = payload;\n } else {\n message = JSON.stringify(payload);\n }\n\n const transaction = new TopicMessageSubmitTransaction()\n .setTopicId(topicId)\n .setMessage(message);\n\n let transactionResponse: {\n result?: TransactionReceipt;\n error?: string;\n };\n\n if (requiresFee) {\n this.logger.info(\n 'Topic requires fee payment, setting max transaction fee'\n );\n transaction.setMaxTransactionFee(new Hbar(this.feeAmount));\n }\n\n if (submitKey) {\n const { accountId, signer } = this.getAccountAndSigner();\n transaction.freezeWithSigner(signer as any);\n const signedTransaction = await transaction.sign(submitKey);\n transactionResponse = await this.hwc.executeTransactionWithErrorHandling(\n signedTransaction,\n true\n );\n } else {\n transactionResponse = await this.hwc.executeTransactionWithErrorHandling(\n transaction,\n false\n );\n }\n\n if (transactionResponse?.error) {\n this.logger.error(\n `Failed to submit payload: ${transactionResponse.error}`\n );\n throw new Error(`Failed to submit payload: ${transactionResponse.error}`);\n }\n\n if (!transactionResponse?.result) {\n this.logger.error(\n 'Failed to submit message: receipt is null or undefined'\n );\n throw new Error('Failed to submit message: receipt is null or undefined');\n }\n\n this.logger.debug('Payload submitted successfully via HWC');\n return transactionResponse.result;\n }\n\n async inscribeFile(\n buffer: Buffer,\n fileName: string,\n options?: {\n progressCallback?: RegistrationProgressCallback;\n waitMaxAttempts?: number;\n waitIntervalMs?: number;\n }\n ): Promise<RetrievedInscriptionResult> {\n const { accountId, signer } = this.getAccountAndSigner();\n\n const mimeType = mime.lookup(fileName) || 'application/octet-stream';\n\n const sdk = await InscriptionSDK.createWithAuth({\n type: 'client',\n accountId: accountId,\n signer: signer as any,\n network: this.network as 'testnet' | 'mainnet',\n });\n\n const inscriptionOptions = {\n mode: 'file' as const,\n waitForConfirmation: true,\n waitMaxAttempts: options?.waitMaxAttempts || 30,\n waitIntervalMs: options?.waitIntervalMs || 4000,\n progressCallback: options?.progressCallback,\n logging: {\n level: this.logger.getLevel ? this.logger.getLevel() : 'info',\n },\n };\n\n const response = await inscribeWithSigner(\n {\n type: 'buffer',\n buffer,\n fileName,\n mimeType,\n },\n signer as any,\n {\n ...inscriptionOptions,\n network: this.network as 'testnet' | 'mainnet',\n },\n sdk\n );\n\n if (!response.confirmed || !response.inscription) {\n throw new Error('Inscription was not confirmed');\n }\n\n return response.inscription;\n }\n\n getAccountAndSigner(): GetAccountAndSignerResponse {\n const accountInfo = this?.hwc?.getAccountInfo();\n const accountId = accountInfo?.accountId?.toString();\n const signer = this?.hwc?.dAppConnector?.signers?.find((s) => {\n return s.getAccountId().toString() === accountId;\n });\n\n if (!signer) {\n this.logger.error('Failed to find signer', {\n accountId,\n signers: this?.hwc?.dAppConnector?.signers,\n accountInfo,\n });\n throw new Error('Failed to find signer');\n }\n\n return { accountId, signer: signer as any };\n }\n\n /**\n * Inscribes a profile picture (PFP) on HCS-11.\n *\n * @param buffer - The buffer containing the PFP image.\n * @param fileName - The name of the file containing the PFP image.\n * @param options - Optional configuration options.\n * @returns A promise that resolves to the topic ID of the inscribed PFP.\n */\n async inscribePfp(\n buffer: Buffer,\n fileName: string,\n options?: {\n progressCallback?: RegistrationProgressCallback;\n }\n ): Promise<InscribePfpResponse> {\n try {\n const progressCallback = options?.progressCallback;\n const progressReporter = new ProgressReporter({\n module: 'PFP-Inscription',\n logger: this.logger,\n callback: progressCallback as any,\n });\n\n if (!this.hcs11Client) {\n progressReporter.failed(\n 'HCS11Client is not available in this environment'\n );\n return {\n pfpTopicId: '',\n success: false,\n error: 'HCS11Client is not available in this environment',\n transactionId: '',\n };\n }\n\n progressReporter.preparing('Preparing to inscribe profile picture', 10);\n this.logger.info('Inscribing profile picture using HCS-11 client');\n\n const wrappedProgressCallback = (data: any) => {\n progressReporter.report({\n stage: data.stage || 'confirming',\n message: data.message || 'Processing PFP inscription',\n progressPercent: data.progressPercent || 50,\n details: data.details,\n });\n };\n\n const imageResult = await this.hcs11Client.inscribeImage(\n buffer,\n fileName,\n { progressCallback: wrappedProgressCallback }\n );\n\n if (!imageResult.success) {\n let errorMessage = 'Failed to inscribe profile picture';\n if (imageResult.error) {\n errorMessage = imageResult.error;\n }\n\n let txId = '';\n if (imageResult.transactionId) {\n txId = imageResult.transactionId;\n }\n\n return {\n pfpTopicId: '',\n success: false,\n error: errorMessage,\n transactionId: txId,\n };\n }\n\n progressReporter.completed('Successfully inscribed profile picture', {\n pfpTopicId: imageResult.imageTopicId,\n });\n\n this.logger.info(\n `Successfully inscribed profile picture with topic ID: ${imageResult.imageTopicId}`\n );\n return {\n pfpTopicId: imageResult.imageTopicId,\n success: true,\n transactionId: imageResult.transactionId || '',\n };\n } catch (error: any) {\n this.logger.error(`Error inscribing profile picture: ${error.message}`);\n return {\n pfpTopicId: '',\n success: false,\n error: error.message,\n transactionId: '',\n };\n }\n }\n\n private async createCommunicationTopics(\n options?: {\n existingState?: AgentCreationState;\n ttl?: number;\n },\n progressReporter?: ProgressReporter\n ): Promise<{\n inboundTopicId: string;\n outboundTopicId: string;\n state: AgentCreationState;\n }> {\n let state =\n options?.existingState ||\n ({\n currentStage: 'init',\n completedPercentage: 0,\n createdResources: [],\n } as AgentCreationState);\n\n if (progressReporter) {\n progressReporter.preparing('Starting communication topic creation', 0, {\n state,\n });\n }\n\n const { accountId } = this.getAccountAndSigner();\n if (!state.outboundTopicId) {\n state.currentStage = 'topics';\n if (progressReporter) {\n progressReporter.preparing('Creating outbound topic', 5, {\n state,\n });\n }\n const outboundMemo = this._generateHcs10Memo(Hcs10MemoType.OUTBOUND, {\n ttl: options?.ttl,\n accountId,\n });\n const outboundResult = await this.createTopic(outboundMemo, true, true);\n if (!outboundResult.success || !outboundResult.topicId) {\n throw new Error(\n outboundResult.error || 'Failed to create outbound topic'\n );\n }\n state.outboundTopicId = outboundResult.topicId;\n if (state.createdResources)\n state.createdResources.push(`outbound:${state.outboundTopicId}`);\n }\n\n if (!state.inboundTopicId) {\n state.currentStage = 'topics';\n if (progressReporter) {\n progressReporter.preparing('Creating inbound topic', 10, {\n state,\n });\n }\n const inboundMemo = this._generateHcs10Memo(Hcs10MemoType.INBOUND, {\n ttl: options?.ttl,\n accountId,\n });\n // TODO: mimic SDK's createInboundTopic\n const inboundResult = await this.createTopic(inboundMemo, true, false);\n if (!inboundResult.success || !inboundResult.topicId) {\n throw new Error(\n inboundResult.error || 'Failed to create inbound topic'\n );\n }\n state.inboundTopicId = inboundResult.topicId;\n if (state.createdResources)\n state.createdResources.push(`inbound:${state.inboundTopicId}`);\n }\n\n return {\n inboundTopicId: state.inboundTopicId,\n outboundTopicId: state.outboundTopicId,\n state,\n };\n }\n}\n"],"names":["mime.lookup"],"mappings":"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"}