@hashgraphonline/standards-sdk 0.0.84 → 0.0.86

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 (212) hide show
  1. package/dist/es/hcs-10/connections-manager.d.ts +128 -9
  2. package/dist/es/hcs-10/connections-manager.d.ts.map +1 -1
  3. package/dist/es/standards-sdk.es10.js +271 -85
  4. package/dist/es/standards-sdk.es10.js.map +1 -1
  5. package/dist/es/standards-sdk.es100.js +147 -3
  6. package/dist/es/standards-sdk.es100.js.map +1 -1
  7. package/dist/es/standards-sdk.es101.js +90 -3
  8. package/dist/es/standards-sdk.es101.js.map +1 -1
  9. package/dist/es/standards-sdk.es102.js +84 -13
  10. package/dist/es/standards-sdk.es102.js.map +1 -1
  11. package/dist/es/standards-sdk.es103.js +32 -13
  12. package/dist/es/standards-sdk.es103.js.map +1 -1
  13. package/dist/es/standards-sdk.es104.js +5 -15
  14. package/dist/es/standards-sdk.es104.js.map +1 -1
  15. package/dist/es/standards-sdk.es105.js +158 -4
  16. package/dist/es/standards-sdk.es105.js.map +1 -1
  17. package/dist/es/standards-sdk.es106.js +21 -37
  18. package/dist/es/standards-sdk.es106.js.map +1 -1
  19. package/dist/es/standards-sdk.es107.js +787 -34
  20. package/dist/es/standards-sdk.es107.js.map +1 -1
  21. package/dist/es/standards-sdk.es108.js +140 -34
  22. package/dist/es/standards-sdk.es108.js.map +1 -1
  23. package/dist/es/standards-sdk.es109.js +167 -71
  24. package/dist/es/standards-sdk.es109.js.map +1 -1
  25. package/dist/es/standards-sdk.es110.js +33 -3
  26. package/dist/es/standards-sdk.es110.js.map +1 -1
  27. package/dist/es/standards-sdk.es111.js +29 -30
  28. package/dist/es/standards-sdk.es111.js.map +1 -1
  29. package/dist/es/standards-sdk.es112.js +9 -33
  30. package/dist/es/standards-sdk.es112.js.map +1 -1
  31. package/dist/es/standards-sdk.es113.js +34 -9
  32. package/dist/es/standards-sdk.es113.js.map +1 -1
  33. package/dist/es/standards-sdk.es114.js +19 -32
  34. package/dist/es/standards-sdk.es114.js.map +1 -1
  35. package/dist/es/standards-sdk.es115.js +27 -3
  36. package/dist/es/standards-sdk.es115.js.map +1 -1
  37. package/dist/es/standards-sdk.es116.js +26 -2
  38. package/dist/es/standards-sdk.es116.js.map +1 -1
  39. package/dist/es/standards-sdk.es117.js +38 -2
  40. package/dist/es/standards-sdk.es117.js.map +1 -1
  41. package/dist/es/standards-sdk.es13.js +3 -3
  42. package/dist/es/standards-sdk.es15.js +1 -1
  43. package/dist/es/standards-sdk.es18.js +2 -2
  44. package/dist/es/standards-sdk.es19.js +3 -3
  45. package/dist/es/standards-sdk.es2.js +0 -11
  46. package/dist/es/standards-sdk.es2.js.map +1 -1
  47. package/dist/es/standards-sdk.es22.js +1692 -966
  48. package/dist/es/standards-sdk.es22.js.map +1 -1
  49. package/dist/es/standards-sdk.es23.js +36 -1767
  50. package/dist/es/standards-sdk.es23.js.map +1 -1
  51. package/dist/es/standards-sdk.es24.js +48 -36
  52. package/dist/es/standards-sdk.es24.js.map +1 -1
  53. package/dist/es/standards-sdk.es25.js +7163 -21
  54. package/dist/es/standards-sdk.es25.js.map +1 -1
  55. package/dist/es/standards-sdk.es26.js +3 -7190
  56. package/dist/es/standards-sdk.es26.js.map +1 -1
  57. package/dist/es/standards-sdk.es27.js +2 -3
  58. package/dist/es/standards-sdk.es27.js.map +1 -1
  59. package/dist/es/standards-sdk.es28.js +1041 -2
  60. package/dist/es/standards-sdk.es28.js.map +1 -1
  61. package/dist/es/standards-sdk.es29.js +4167 -5
  62. package/dist/es/standards-sdk.es29.js.map +1 -1
  63. package/dist/es/standards-sdk.es30.js +5 -4167
  64. package/dist/es/standards-sdk.es30.js.map +1 -1
  65. package/dist/es/standards-sdk.es31.js +419 -2
  66. package/dist/es/standards-sdk.es31.js.map +1 -1
  67. package/dist/es/standards-sdk.es32.js +2 -364
  68. package/dist/es/standards-sdk.es32.js.map +1 -1
  69. package/dist/es/standards-sdk.es33.js +119 -5
  70. package/dist/es/standards-sdk.es33.js.map +1 -1
  71. package/dist/es/standards-sdk.es34.js +3 -178
  72. package/dist/es/standards-sdk.es34.js.map +1 -1
  73. package/dist/es/standards-sdk.es35.js +351 -68
  74. package/dist/es/standards-sdk.es35.js.map +1 -1
  75. package/dist/es/standards-sdk.es36.js +5 -113
  76. package/dist/es/standards-sdk.es36.js.map +1 -1
  77. package/dist/es/standards-sdk.es37.js +170 -43
  78. package/dist/es/standards-sdk.es37.js.map +1 -1
  79. package/dist/es/standards-sdk.es38.js +80 -9
  80. package/dist/es/standards-sdk.es38.js.map +1 -1
  81. package/dist/es/standards-sdk.es39.js +104 -87
  82. package/dist/es/standards-sdk.es39.js.map +1 -1
  83. package/dist/es/standards-sdk.es4.js +1 -1
  84. package/dist/es/standards-sdk.es40.js +51 -3
  85. package/dist/es/standards-sdk.es40.js.map +1 -1
  86. package/dist/es/standards-sdk.es41.js +10 -2
  87. package/dist/es/standards-sdk.es41.js.map +1 -1
  88. package/dist/es/standards-sdk.es42.js +86 -102
  89. package/dist/es/standards-sdk.es42.js.map +1 -1
  90. package/dist/es/standards-sdk.es43.js +3 -73
  91. package/dist/es/standards-sdk.es43.js.map +1 -1
  92. package/dist/es/standards-sdk.es44.js +2 -6
  93. package/dist/es/standards-sdk.es44.js.map +1 -1
  94. package/dist/es/standards-sdk.es45.js +112 -4
  95. package/dist/es/standards-sdk.es45.js.map +1 -1
  96. package/dist/es/standards-sdk.es46.js +69 -216
  97. package/dist/es/standards-sdk.es46.js.map +1 -1
  98. package/dist/es/standards-sdk.es47.js +6 -58
  99. package/dist/es/standards-sdk.es47.js.map +1 -1
  100. package/dist/es/standards-sdk.es48.js +5 -69
  101. package/dist/es/standards-sdk.es48.js.map +1 -1
  102. package/dist/es/standards-sdk.es49.js +213 -187
  103. package/dist/es/standards-sdk.es49.js.map +1 -1
  104. package/dist/es/standards-sdk.es5.js +3 -3
  105. package/dist/es/standards-sdk.es50.js +51 -431
  106. package/dist/es/standards-sdk.es50.js.map +1 -1
  107. package/dist/es/standards-sdk.es51.js +69 -25
  108. package/dist/es/standards-sdk.es51.js.map +1 -1
  109. package/dist/es/standards-sdk.es52.js +93 -131
  110. package/dist/es/standards-sdk.es52.js.map +1 -1
  111. package/dist/es/standards-sdk.es53.js +2 -18
  112. package/dist/es/standards-sdk.es53.js.map +1 -1
  113. package/dist/es/standards-sdk.es54.js +15 -28
  114. package/dist/es/standards-sdk.es54.js.map +1 -1
  115. package/dist/es/standards-sdk.es55.js +404 -24
  116. package/dist/es/standards-sdk.es55.js.map +1 -1
  117. package/dist/es/standards-sdk.es56.js +2282 -21
  118. package/dist/es/standards-sdk.es56.js.map +1 -1
  119. package/dist/es/standards-sdk.es57.js +158 -38
  120. package/dist/es/standards-sdk.es57.js.map +1 -1
  121. package/dist/es/standards-sdk.es58.js +3 -18
  122. package/dist/es/standards-sdk.es58.js.map +1 -1
  123. package/dist/es/standards-sdk.es59.js +27 -56
  124. package/dist/es/standards-sdk.es59.js.map +1 -1
  125. package/dist/es/standards-sdk.es60.js +40 -1266
  126. package/dist/es/standards-sdk.es60.js.map +1 -1
  127. package/dist/es/standards-sdk.es61.js +44 -142
  128. package/dist/es/standards-sdk.es61.js.map +1 -1
  129. package/dist/es/standards-sdk.es62.js +8 -89
  130. package/dist/es/standards-sdk.es62.js.map +1 -1
  131. package/dist/es/standards-sdk.es63.js +57 -76
  132. package/dist/es/standards-sdk.es63.js.map +1 -1
  133. package/dist/es/standards-sdk.es64.js +6 -32
  134. package/dist/es/standards-sdk.es64.js.map +1 -1
  135. package/dist/es/standards-sdk.es65.js +14 -5
  136. package/dist/es/standards-sdk.es65.js.map +1 -1
  137. package/dist/es/standards-sdk.es66.js +7 -159
  138. package/dist/es/standards-sdk.es66.js.map +1 -1
  139. package/dist/es/standards-sdk.es67.js +44 -22
  140. package/dist/es/standards-sdk.es67.js.map +1 -1
  141. package/dist/es/standards-sdk.es68.js +2 -793
  142. package/dist/es/standards-sdk.es68.js.map +1 -1
  143. package/dist/es/standards-sdk.es69.js +126 -91
  144. package/dist/es/standards-sdk.es69.js.map +1 -1
  145. package/dist/es/standards-sdk.es7.js +3 -3
  146. package/dist/es/standards-sdk.es70.js +172 -2
  147. package/dist/es/standards-sdk.es70.js.map +1 -1
  148. package/dist/es/standards-sdk.es71.js +13 -16
  149. package/dist/es/standards-sdk.es71.js.map +1 -1
  150. package/dist/es/standards-sdk.es72.js +13 -409
  151. package/dist/es/standards-sdk.es72.js.map +1 -1
  152. package/dist/es/standards-sdk.es73.js +7128 -166
  153. package/dist/es/standards-sdk.es73.js.map +1 -1
  154. package/dist/es/standards-sdk.es74.js +2 -143
  155. package/dist/es/standards-sdk.es74.js.map +1 -1
  156. package/dist/es/standards-sdk.es75.js +31 -2281
  157. package/dist/es/standards-sdk.es75.js.map +1 -1
  158. package/dist/es/standards-sdk.es76.js +14 -163
  159. package/dist/es/standards-sdk.es76.js.map +1 -1
  160. package/dist/es/standards-sdk.es77.js +3 -418
  161. package/dist/es/standards-sdk.es77.js.map +1 -1
  162. package/dist/es/standards-sdk.es78.js +4 -2
  163. package/dist/es/standards-sdk.es78.js.map +1 -1
  164. package/dist/es/standards-sdk.es79.js +14 -118
  165. package/dist/es/standards-sdk.es79.js.map +1 -1
  166. package/dist/es/standards-sdk.es8.js +3 -3
  167. package/dist/es/standards-sdk.es80.js +4 -20
  168. package/dist/es/standards-sdk.es80.js.map +1 -1
  169. package/dist/es/standards-sdk.es81.js +39 -3
  170. package/dist/es/standards-sdk.es81.js.map +1 -1
  171. package/dist/es/standards-sdk.es82.js +36 -28
  172. package/dist/es/standards-sdk.es82.js.map +1 -1
  173. package/dist/es/standards-sdk.es83.js +35 -61
  174. package/dist/es/standards-sdk.es83.js.map +1 -1
  175. package/dist/es/standards-sdk.es84.js +72 -44
  176. package/dist/es/standards-sdk.es84.js.map +1 -1
  177. package/dist/es/standards-sdk.es85.js +3 -10
  178. package/dist/es/standards-sdk.es85.js.map +1 -1
  179. package/dist/es/standards-sdk.es86.js +2 -65
  180. package/dist/es/standards-sdk.es86.js.map +1 -1
  181. package/dist/es/standards-sdk.es87.js +2 -6
  182. package/dist/es/standards-sdk.es87.js.map +1 -1
  183. package/dist/es/standards-sdk.es88.js +192 -12
  184. package/dist/es/standards-sdk.es88.js.map +1 -1
  185. package/dist/es/standards-sdk.es89.js +437 -6
  186. package/dist/es/standards-sdk.es89.js.map +1 -1
  187. package/dist/es/standards-sdk.es9.js +1 -1
  188. package/dist/es/standards-sdk.es90.js +24 -44
  189. package/dist/es/standards-sdk.es90.js.map +1 -1
  190. package/dist/es/standards-sdk.es91.js +139 -2
  191. package/dist/es/standards-sdk.es91.js.map +1 -1
  192. package/dist/es/standards-sdk.es92.js +18 -136
  193. package/dist/es/standards-sdk.es92.js.map +1 -1
  194. package/dist/es/standards-sdk.es93.js +23 -166
  195. package/dist/es/standards-sdk.es93.js.map +1 -1
  196. package/dist/es/standards-sdk.es94.js +27 -7134
  197. package/dist/es/standards-sdk.es94.js.map +1 -1
  198. package/dist/es/standards-sdk.es95.js +19 -25
  199. package/dist/es/standards-sdk.es95.js.map +1 -1
  200. package/dist/es/standards-sdk.es96.js +42 -24
  201. package/dist/es/standards-sdk.es96.js.map +1 -1
  202. package/dist/es/standards-sdk.es97.js +16 -36
  203. package/dist/es/standards-sdk.es97.js.map +1 -1
  204. package/dist/es/standards-sdk.es98.js +60 -31
  205. package/dist/es/standards-sdk.es98.js.map +1 -1
  206. package/dist/es/standards-sdk.es99.js +1288 -14
  207. package/dist/es/standards-sdk.es99.js.map +1 -1
  208. package/dist/umd/hcs-10/connections-manager.d.ts +128 -9
  209. package/dist/umd/hcs-10/connections-manager.d.ts.map +1 -1
  210. package/dist/umd/standards-sdk.umd.js +9 -9
  211. package/dist/umd/standards-sdk.umd.js.map +1 -1
  212. package/package.json +2 -1
@@ -1 +1 @@
1
- {"version":3,"file":"standards-sdk.es99.js","sources":["../../node_modules/axios/lib/core/transformData.js"],"sourcesContent":["'use strict';\n\nimport utils from './../utils.js';\nimport defaults from '../defaults/index.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Array|Function} fns A single function or Array of functions\n * @param {?Object} response The response object\n *\n * @returns {*} The resulting transformed data\n */\nexport default function transformData(fns, response) {\n const config = this || defaults;\n const context = response || config;\n const headers = AxiosHeaders.from(context.headers);\n let data = context.data;\n\n utils.forEach(fns, function transform(fn) {\n data = fn.call(config, data, headers.normalize(), response ? response.status : undefined);\n });\n\n headers.normalize();\n\n return data;\n}\n"],"names":[],"mappings":";;;AAce,SAAS,cAAc,KAAK,UAAU;AACnD,QAAM,SAAS,QAAQ;AACvB,QAAM,UAAU,YAAY;AAC5B,QAAM,UAAU,aAAa,KAAK,QAAQ,OAAO;AACjD,MAAI,OAAO,QAAQ;AAEnB,QAAM,QAAQ,KAAK,SAAS,UAAU,IAAI;AACxC,WAAO,GAAG,KAAK,QAAQ,MAAM,QAAQ,UAAS,GAAI,WAAW,SAAS,SAAS,MAAS;AAAA,EAC5F,CAAG;AAED,UAAQ,UAAW;AAEnB,SAAO;AACT;","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"standards-sdk.es99.js","sources":["../../node_modules/ethers/lib.esm/abi/fragments.js"],"sourcesContent":["/**\n * A fragment is a single item from an ABI, which may represent any of:\n *\n * - [Functions](FunctionFragment)\n * - [Events](EventFragment)\n * - [Constructors](ConstructorFragment)\n * - Custom [Errors](ErrorFragment)\n * - [Fallback or Receive](FallbackFragment) functions\n *\n * @_subsection api/abi/abi-coder:Fragments [about-fragments]\n */\nimport { defineProperties, getBigInt, getNumber, assert, assertPrivate, assertArgument } from \"../utils/index.js\";\nimport { id } from \"../hash/index.js\";\n;\n// [ \"a\", \"b\" ] => { \"a\": 1, \"b\": 1 }\nfunction setify(items) {\n const result = new Set();\n items.forEach((k) => result.add(k));\n return Object.freeze(result);\n}\nconst _kwVisibDeploy = \"external public payable override\";\nconst KwVisibDeploy = setify(_kwVisibDeploy.split(\" \"));\n// Visibility Keywords\nconst _kwVisib = \"constant external internal payable private public pure view override\";\nconst KwVisib = setify(_kwVisib.split(\" \"));\nconst _kwTypes = \"constructor error event fallback function receive struct\";\nconst KwTypes = setify(_kwTypes.split(\" \"));\nconst _kwModifiers = \"calldata memory storage payable indexed\";\nconst KwModifiers = setify(_kwModifiers.split(\" \"));\nconst _kwOther = \"tuple returns\";\n// All Keywords\nconst _keywords = [_kwTypes, _kwModifiers, _kwOther, _kwVisib].join(\" \");\nconst Keywords = setify(_keywords.split(\" \"));\n// Single character tokens\nconst SimpleTokens = {\n \"(\": \"OPEN_PAREN\", \")\": \"CLOSE_PAREN\",\n \"[\": \"OPEN_BRACKET\", \"]\": \"CLOSE_BRACKET\",\n \",\": \"COMMA\", \"@\": \"AT\"\n};\n// Parser regexes to consume the next token\nconst regexWhitespacePrefix = new RegExp(\"^(\\\\s*)\");\nconst regexNumberPrefix = new RegExp(\"^([0-9]+)\");\nconst regexIdPrefix = new RegExp(\"^([a-zA-Z$_][a-zA-Z0-9$_]*)\");\n// Parser regexs to check validity\nconst regexId = new RegExp(\"^([a-zA-Z$_][a-zA-Z0-9$_]*)$\");\nconst regexType = new RegExp(\"^(address|bool|bytes([0-9]*)|string|u?int([0-9]*))$\");\nclass TokenString {\n #offset;\n #tokens;\n get offset() { return this.#offset; }\n get length() { return this.#tokens.length - this.#offset; }\n constructor(tokens) {\n this.#offset = 0;\n this.#tokens = tokens.slice();\n }\n clone() { return new TokenString(this.#tokens); }\n reset() { this.#offset = 0; }\n #subTokenString(from = 0, to = 0) {\n return new TokenString(this.#tokens.slice(from, to).map((t) => {\n return Object.freeze(Object.assign({}, t, {\n match: (t.match - from),\n linkBack: (t.linkBack - from),\n linkNext: (t.linkNext - from),\n }));\n }));\n }\n // Pops and returns the value of the next token, if it is a keyword in allowed; throws if out of tokens\n popKeyword(allowed) {\n const top = this.peek();\n if (top.type !== \"KEYWORD\" || !allowed.has(top.text)) {\n throw new Error(`expected keyword ${top.text}`);\n }\n return this.pop().text;\n }\n // Pops and returns the value of the next token if it is `type`; throws if out of tokens\n popType(type) {\n if (this.peek().type !== type) {\n const top = this.peek();\n throw new Error(`expected ${type}; got ${top.type} ${JSON.stringify(top.text)}`);\n }\n return this.pop().text;\n }\n // Pops and returns a \"(\" TOKENS \")\"\n popParen() {\n const top = this.peek();\n if (top.type !== \"OPEN_PAREN\") {\n throw new Error(\"bad start\");\n }\n const result = this.#subTokenString(this.#offset + 1, top.match + 1);\n this.#offset = top.match + 1;\n return result;\n }\n // Pops and returns the items within \"(\" ITEM1 \",\" ITEM2 \",\" ... \")\"\n popParams() {\n const top = this.peek();\n if (top.type !== \"OPEN_PAREN\") {\n throw new Error(\"bad start\");\n }\n const result = [];\n while (this.#offset < top.match - 1) {\n const link = this.peek().linkNext;\n result.push(this.#subTokenString(this.#offset + 1, link));\n this.#offset = link;\n }\n this.#offset = top.match + 1;\n return result;\n }\n // Returns the top Token, throwing if out of tokens\n peek() {\n if (this.#offset >= this.#tokens.length) {\n throw new Error(\"out-of-bounds\");\n }\n return this.#tokens[this.#offset];\n }\n // Returns the next value, if it is a keyword in `allowed`\n peekKeyword(allowed) {\n const top = this.peekType(\"KEYWORD\");\n return (top != null && allowed.has(top)) ? top : null;\n }\n // Returns the value of the next token if it is `type`\n peekType(type) {\n if (this.length === 0) {\n return null;\n }\n const top = this.peek();\n return (top.type === type) ? top.text : null;\n }\n // Returns the next token; throws if out of tokens\n pop() {\n const result = this.peek();\n this.#offset++;\n return result;\n }\n toString() {\n const tokens = [];\n for (let i = this.#offset; i < this.#tokens.length; i++) {\n const token = this.#tokens[i];\n tokens.push(`${token.type}:${token.text}`);\n }\n return `<TokenString ${tokens.join(\" \")}>`;\n }\n}\nfunction lex(text) {\n const tokens = [];\n const throwError = (message) => {\n const token = (offset < text.length) ? JSON.stringify(text[offset]) : \"$EOI\";\n throw new Error(`invalid token ${token} at ${offset}: ${message}`);\n };\n let brackets = [];\n let commas = [];\n let offset = 0;\n while (offset < text.length) {\n // Strip off any leading whitespace\n let cur = text.substring(offset);\n let match = cur.match(regexWhitespacePrefix);\n if (match) {\n offset += match[1].length;\n cur = text.substring(offset);\n }\n const token = { depth: brackets.length, linkBack: -1, linkNext: -1, match: -1, type: \"\", text: \"\", offset, value: -1 };\n tokens.push(token);\n let type = (SimpleTokens[cur[0]] || \"\");\n if (type) {\n token.type = type;\n token.text = cur[0];\n offset++;\n if (type === \"OPEN_PAREN\") {\n brackets.push(tokens.length - 1);\n commas.push(tokens.length - 1);\n }\n else if (type == \"CLOSE_PAREN\") {\n if (brackets.length === 0) {\n throwError(\"no matching open bracket\");\n }\n token.match = brackets.pop();\n (tokens[token.match]).match = tokens.length - 1;\n token.depth--;\n token.linkBack = commas.pop();\n (tokens[token.linkBack]).linkNext = tokens.length - 1;\n }\n else if (type === \"COMMA\") {\n token.linkBack = commas.pop();\n (tokens[token.linkBack]).linkNext = tokens.length - 1;\n commas.push(tokens.length - 1);\n }\n else if (type === \"OPEN_BRACKET\") {\n token.type = \"BRACKET\";\n }\n else if (type === \"CLOSE_BRACKET\") {\n // Remove the CLOSE_BRACKET\n let suffix = tokens.pop().text;\n if (tokens.length > 0 && tokens[tokens.length - 1].type === \"NUMBER\") {\n const value = tokens.pop().text;\n suffix = value + suffix;\n (tokens[tokens.length - 1]).value = getNumber(value);\n }\n if (tokens.length === 0 || tokens[tokens.length - 1].type !== \"BRACKET\") {\n throw new Error(\"missing opening bracket\");\n }\n (tokens[tokens.length - 1]).text += suffix;\n }\n continue;\n }\n match = cur.match(regexIdPrefix);\n if (match) {\n token.text = match[1];\n offset += token.text.length;\n if (Keywords.has(token.text)) {\n token.type = \"KEYWORD\";\n continue;\n }\n if (token.text.match(regexType)) {\n token.type = \"TYPE\";\n continue;\n }\n token.type = \"ID\";\n continue;\n }\n match = cur.match(regexNumberPrefix);\n if (match) {\n token.text = match[1];\n token.type = \"NUMBER\";\n offset += token.text.length;\n continue;\n }\n throw new Error(`unexpected token ${JSON.stringify(cur[0])} at position ${offset}`);\n }\n return new TokenString(tokens.map((t) => Object.freeze(t)));\n}\n// Check only one of `allowed` is in `set`\nfunction allowSingle(set, allowed) {\n let included = [];\n for (const key in allowed.keys()) {\n if (set.has(key)) {\n included.push(key);\n }\n }\n if (included.length > 1) {\n throw new Error(`conflicting types: ${included.join(\", \")}`);\n }\n}\n// Functions to process a Solidity Signature TokenString from left-to-right for...\n// ...the name with an optional type, returning the name\nfunction consumeName(type, tokens) {\n if (tokens.peekKeyword(KwTypes)) {\n const keyword = tokens.pop().text;\n if (keyword !== type) {\n throw new Error(`expected ${type}, got ${keyword}`);\n }\n }\n return tokens.popType(\"ID\");\n}\n// ...all keywords matching allowed, returning the keywords\nfunction consumeKeywords(tokens, allowed) {\n const keywords = new Set();\n while (true) {\n const keyword = tokens.peekType(\"KEYWORD\");\n if (keyword == null || (allowed && !allowed.has(keyword))) {\n break;\n }\n tokens.pop();\n if (keywords.has(keyword)) {\n throw new Error(`duplicate keywords: ${JSON.stringify(keyword)}`);\n }\n keywords.add(keyword);\n }\n return Object.freeze(keywords);\n}\n// ...all visibility keywords, returning the coalesced mutability\nfunction consumeMutability(tokens) {\n let modifiers = consumeKeywords(tokens, KwVisib);\n // Detect conflicting modifiers\n allowSingle(modifiers, setify(\"constant payable nonpayable\".split(\" \")));\n allowSingle(modifiers, setify(\"pure view payable nonpayable\".split(\" \")));\n // Process mutability states\n if (modifiers.has(\"view\")) {\n return \"view\";\n }\n if (modifiers.has(\"pure\")) {\n return \"pure\";\n }\n if (modifiers.has(\"payable\")) {\n return \"payable\";\n }\n if (modifiers.has(\"nonpayable\")) {\n return \"nonpayable\";\n }\n // Process legacy `constant` last\n if (modifiers.has(\"constant\")) {\n return \"view\";\n }\n return \"nonpayable\";\n}\n// ...a parameter list, returning the ParamType list\nfunction consumeParams(tokens, allowIndexed) {\n return tokens.popParams().map((t) => ParamType.from(t, allowIndexed));\n}\n// ...a gas limit, returning a BigNumber or null if none\nfunction consumeGas(tokens) {\n if (tokens.peekType(\"AT\")) {\n tokens.pop();\n if (tokens.peekType(\"NUMBER\")) {\n return getBigInt(tokens.pop().text);\n }\n throw new Error(\"invalid gas\");\n }\n return null;\n}\nfunction consumeEoi(tokens) {\n if (tokens.length) {\n throw new Error(`unexpected tokens at offset ${tokens.offset}: ${tokens.toString()}`);\n }\n}\nconst regexArrayType = new RegExp(/^(.*)\\[([0-9]*)\\]$/);\nfunction verifyBasicType(type) {\n const match = type.match(regexType);\n assertArgument(match, \"invalid type\", \"type\", type);\n if (type === \"uint\") {\n return \"uint256\";\n }\n if (type === \"int\") {\n return \"int256\";\n }\n if (match[2]) {\n // bytesXX\n const length = parseInt(match[2]);\n assertArgument(length !== 0 && length <= 32, \"invalid bytes length\", \"type\", type);\n }\n else if (match[3]) {\n // intXX or uintXX\n const size = parseInt(match[3]);\n assertArgument(size !== 0 && size <= 256 && (size % 8) === 0, \"invalid numeric width\", \"type\", type);\n }\n return type;\n}\n// Make the Fragment constructors effectively private\nconst _guard = {};\nconst internal = Symbol.for(\"_ethers_internal\");\nconst ParamTypeInternal = \"_ParamTypeInternal\";\nconst ErrorFragmentInternal = \"_ErrorInternal\";\nconst EventFragmentInternal = \"_EventInternal\";\nconst ConstructorFragmentInternal = \"_ConstructorInternal\";\nconst FallbackFragmentInternal = \"_FallbackInternal\";\nconst FunctionFragmentInternal = \"_FunctionInternal\";\nconst StructFragmentInternal = \"_StructInternal\";\n/**\n * Each input and output of a [[Fragment]] is an Array of **ParamType**.\n */\nexport class ParamType {\n /**\n * The local name of the parameter (or ``\"\"`` if unbound)\n */\n name;\n /**\n * The fully qualified type (e.g. ``\"address\"``, ``\"tuple(address)\"``,\n * ``\"uint256[3][]\"``)\n */\n type;\n /**\n * The base type (e.g. ``\"address\"``, ``\"tuple\"``, ``\"array\"``)\n */\n baseType;\n /**\n * True if the parameters is indexed.\n *\n * For non-indexable types this is ``null``.\n */\n indexed;\n /**\n * The components for the tuple.\n *\n * For non-tuple types this is ``null``.\n */\n components;\n /**\n * The array length, or ``-1`` for dynamic-lengthed arrays.\n *\n * For non-array types this is ``null``.\n */\n arrayLength;\n /**\n * The type of each child in the array.\n *\n * For non-array types this is ``null``.\n */\n arrayChildren;\n /**\n * @private\n */\n constructor(guard, name, type, baseType, indexed, components, arrayLength, arrayChildren) {\n assertPrivate(guard, _guard, \"ParamType\");\n Object.defineProperty(this, internal, { value: ParamTypeInternal });\n if (components) {\n components = Object.freeze(components.slice());\n }\n if (baseType === \"array\") {\n if (arrayLength == null || arrayChildren == null) {\n throw new Error(\"\");\n }\n }\n else if (arrayLength != null || arrayChildren != null) {\n throw new Error(\"\");\n }\n if (baseType === \"tuple\") {\n if (components == null) {\n throw new Error(\"\");\n }\n }\n else if (components != null) {\n throw new Error(\"\");\n }\n defineProperties(this, {\n name, type, baseType, indexed, components, arrayLength, arrayChildren\n });\n }\n /**\n * Return a string representation of this type.\n *\n * For example,\n *\n * ``sighash\" => \"(uint256,address)\"``\n *\n * ``\"minimal\" => \"tuple(uint256,address) indexed\"``\n *\n * ``\"full\" => \"tuple(uint256 foo, address bar) indexed baz\"``\n */\n format(format) {\n if (format == null) {\n format = \"sighash\";\n }\n if (format === \"json\") {\n const name = this.name || \"\";\n if (this.isArray()) {\n const result = JSON.parse(this.arrayChildren.format(\"json\"));\n result.name = name;\n result.type += `[${(this.arrayLength < 0 ? \"\" : String(this.arrayLength))}]`;\n return JSON.stringify(result);\n }\n const result = {\n type: ((this.baseType === \"tuple\") ? \"tuple\" : this.type),\n name\n };\n if (typeof (this.indexed) === \"boolean\") {\n result.indexed = this.indexed;\n }\n if (this.isTuple()) {\n result.components = this.components.map((c) => JSON.parse(c.format(format)));\n }\n return JSON.stringify(result);\n }\n let result = \"\";\n // Array\n if (this.isArray()) {\n result += this.arrayChildren.format(format);\n result += `[${(this.arrayLength < 0 ? \"\" : String(this.arrayLength))}]`;\n }\n else {\n if (this.isTuple()) {\n result += \"(\" + this.components.map((comp) => comp.format(format)).join((format === \"full\") ? \", \" : \",\") + \")\";\n }\n else {\n result += this.type;\n }\n }\n if (format !== \"sighash\") {\n if (this.indexed === true) {\n result += \" indexed\";\n }\n if (format === \"full\" && this.name) {\n result += \" \" + this.name;\n }\n }\n return result;\n }\n /**\n * Returns true if %%this%% is an Array type.\n *\n * This provides a type gaurd ensuring that [[arrayChildren]]\n * and [[arrayLength]] are non-null.\n */\n isArray() {\n return (this.baseType === \"array\");\n }\n /**\n * Returns true if %%this%% is a Tuple type.\n *\n * This provides a type gaurd ensuring that [[components]]\n * is non-null.\n */\n isTuple() {\n return (this.baseType === \"tuple\");\n }\n /**\n * Returns true if %%this%% is an Indexable type.\n *\n * This provides a type gaurd ensuring that [[indexed]]\n * is non-null.\n */\n isIndexable() {\n return (this.indexed != null);\n }\n /**\n * Walks the **ParamType** with %%value%%, calling %%process%%\n * on each type, destructing the %%value%% recursively.\n */\n walk(value, process) {\n if (this.isArray()) {\n if (!Array.isArray(value)) {\n throw new Error(\"invalid array value\");\n }\n if (this.arrayLength !== -1 && value.length !== this.arrayLength) {\n throw new Error(\"array is wrong length\");\n }\n const _this = this;\n return value.map((v) => (_this.arrayChildren.walk(v, process)));\n }\n if (this.isTuple()) {\n if (!Array.isArray(value)) {\n throw new Error(\"invalid tuple value\");\n }\n if (value.length !== this.components.length) {\n throw new Error(\"array is wrong length\");\n }\n const _this = this;\n return value.map((v, i) => (_this.components[i].walk(v, process)));\n }\n return process(this.type, value);\n }\n #walkAsync(promises, value, process, setValue) {\n if (this.isArray()) {\n if (!Array.isArray(value)) {\n throw new Error(\"invalid array value\");\n }\n if (this.arrayLength !== -1 && value.length !== this.arrayLength) {\n throw new Error(\"array is wrong length\");\n }\n const childType = this.arrayChildren;\n const result = value.slice();\n result.forEach((value, index) => {\n childType.#walkAsync(promises, value, process, (value) => {\n result[index] = value;\n });\n });\n setValue(result);\n return;\n }\n if (this.isTuple()) {\n const components = this.components;\n // Convert the object into an array\n let result;\n if (Array.isArray(value)) {\n result = value.slice();\n }\n else {\n if (value == null || typeof (value) !== \"object\") {\n throw new Error(\"invalid tuple value\");\n }\n result = components.map((param) => {\n if (!param.name) {\n throw new Error(\"cannot use object value with unnamed components\");\n }\n if (!(param.name in value)) {\n throw new Error(`missing value for component ${param.name}`);\n }\n return value[param.name];\n });\n }\n if (result.length !== this.components.length) {\n throw new Error(\"array is wrong length\");\n }\n result.forEach((value, index) => {\n components[index].#walkAsync(promises, value, process, (value) => {\n result[index] = value;\n });\n });\n setValue(result);\n return;\n }\n const result = process(this.type, value);\n if (result.then) {\n promises.push((async function () { setValue(await result); })());\n }\n else {\n setValue(result);\n }\n }\n /**\n * Walks the **ParamType** with %%value%%, asynchronously calling\n * %%process%% on each type, destructing the %%value%% recursively.\n *\n * This can be used to resolve ENS names by walking and resolving each\n * ``\"address\"`` type.\n */\n async walkAsync(value, process) {\n const promises = [];\n const result = [value];\n this.#walkAsync(promises, value, process, (value) => {\n result[0] = value;\n });\n if (promises.length) {\n await Promise.all(promises);\n }\n return result[0];\n }\n /**\n * Creates a new **ParamType** for %%obj%%.\n *\n * If %%allowIndexed%% then the ``indexed`` keyword is permitted,\n * otherwise the ``indexed`` keyword will throw an error.\n */\n static from(obj, allowIndexed) {\n if (ParamType.isParamType(obj)) {\n return obj;\n }\n if (typeof (obj) === \"string\") {\n try {\n return ParamType.from(lex(obj), allowIndexed);\n }\n catch (error) {\n assertArgument(false, \"invalid param type\", \"obj\", obj);\n }\n }\n else if (obj instanceof TokenString) {\n let type = \"\", baseType = \"\";\n let comps = null;\n if (consumeKeywords(obj, setify([\"tuple\"])).has(\"tuple\") || obj.peekType(\"OPEN_PAREN\")) {\n // Tuple\n baseType = \"tuple\";\n comps = obj.popParams().map((t) => ParamType.from(t));\n type = `tuple(${comps.map((c) => c.format()).join(\",\")})`;\n }\n else {\n // Normal\n type = verifyBasicType(obj.popType(\"TYPE\"));\n baseType = type;\n }\n // Check for Array\n let arrayChildren = null;\n let arrayLength = null;\n while (obj.length && obj.peekType(\"BRACKET\")) {\n const bracket = obj.pop(); //arrays[i];\n arrayChildren = new ParamType(_guard, \"\", type, baseType, null, comps, arrayLength, arrayChildren);\n arrayLength = bracket.value;\n type += bracket.text;\n baseType = \"array\";\n comps = null;\n }\n let indexed = null;\n const keywords = consumeKeywords(obj, KwModifiers);\n if (keywords.has(\"indexed\")) {\n if (!allowIndexed) {\n throw new Error(\"\");\n }\n indexed = true;\n }\n const name = (obj.peekType(\"ID\") ? obj.pop().text : \"\");\n if (obj.length) {\n throw new Error(\"leftover tokens\");\n }\n return new ParamType(_guard, name, type, baseType, indexed, comps, arrayLength, arrayChildren);\n }\n const name = obj.name;\n assertArgument(!name || (typeof (name) === \"string\" && name.match(regexId)), \"invalid name\", \"obj.name\", name);\n let indexed = obj.indexed;\n if (indexed != null) {\n assertArgument(allowIndexed, \"parameter cannot be indexed\", \"obj.indexed\", obj.indexed);\n indexed = !!indexed;\n }\n let type = obj.type;\n let arrayMatch = type.match(regexArrayType);\n if (arrayMatch) {\n const arrayLength = parseInt(arrayMatch[2] || \"-1\");\n const arrayChildren = ParamType.from({\n type: arrayMatch[1],\n components: obj.components\n });\n return new ParamType(_guard, name || \"\", type, \"array\", indexed, null, arrayLength, arrayChildren);\n }\n if (type === \"tuple\" || type.startsWith(\"tuple(\" /* fix: ) */) || type.startsWith(\"(\" /* fix: ) */)) {\n const comps = (obj.components != null) ? obj.components.map((c) => ParamType.from(c)) : null;\n const tuple = new ParamType(_guard, name || \"\", type, \"tuple\", indexed, comps, null, null);\n // @TODO: use lexer to validate and normalize type\n return tuple;\n }\n type = verifyBasicType(obj.type);\n return new ParamType(_guard, name || \"\", type, type, indexed, null, null, null);\n }\n /**\n * Returns true if %%value%% is a **ParamType**.\n */\n static isParamType(value) {\n return (value && value[internal] === ParamTypeInternal);\n }\n}\n/**\n * An abstract class to represent An individual fragment from a parse ABI.\n */\nexport class Fragment {\n /**\n * The type of the fragment.\n */\n type;\n /**\n * The inputs for the fragment.\n */\n inputs;\n /**\n * @private\n */\n constructor(guard, type, inputs) {\n assertPrivate(guard, _guard, \"Fragment\");\n inputs = Object.freeze(inputs.slice());\n defineProperties(this, { type, inputs });\n }\n /**\n * Creates a new **Fragment** for %%obj%%, wich can be any supported\n * ABI frgament type.\n */\n static from(obj) {\n if (typeof (obj) === \"string\") {\n // Try parsing JSON...\n try {\n Fragment.from(JSON.parse(obj));\n }\n catch (e) { }\n // ...otherwise, use the human-readable lexer\n return Fragment.from(lex(obj));\n }\n if (obj instanceof TokenString) {\n // Human-readable ABI (already lexed)\n const type = obj.peekKeyword(KwTypes);\n switch (type) {\n case \"constructor\": return ConstructorFragment.from(obj);\n case \"error\": return ErrorFragment.from(obj);\n case \"event\": return EventFragment.from(obj);\n case \"fallback\":\n case \"receive\":\n return FallbackFragment.from(obj);\n case \"function\": return FunctionFragment.from(obj);\n case \"struct\": return StructFragment.from(obj);\n }\n }\n else if (typeof (obj) === \"object\") {\n // JSON ABI\n switch (obj.type) {\n case \"constructor\": return ConstructorFragment.from(obj);\n case \"error\": return ErrorFragment.from(obj);\n case \"event\": return EventFragment.from(obj);\n case \"fallback\":\n case \"receive\":\n return FallbackFragment.from(obj);\n case \"function\": return FunctionFragment.from(obj);\n case \"struct\": return StructFragment.from(obj);\n }\n assert(false, `unsupported type: ${obj.type}`, \"UNSUPPORTED_OPERATION\", {\n operation: \"Fragment.from\"\n });\n }\n assertArgument(false, \"unsupported frgament object\", \"obj\", obj);\n }\n /**\n * Returns true if %%value%% is a [[ConstructorFragment]].\n */\n static isConstructor(value) {\n return ConstructorFragment.isFragment(value);\n }\n /**\n * Returns true if %%value%% is an [[ErrorFragment]].\n */\n static isError(value) {\n return ErrorFragment.isFragment(value);\n }\n /**\n * Returns true if %%value%% is an [[EventFragment]].\n */\n static isEvent(value) {\n return EventFragment.isFragment(value);\n }\n /**\n * Returns true if %%value%% is a [[FunctionFragment]].\n */\n static isFunction(value) {\n return FunctionFragment.isFragment(value);\n }\n /**\n * Returns true if %%value%% is a [[StructFragment]].\n */\n static isStruct(value) {\n return StructFragment.isFragment(value);\n }\n}\n/**\n * An abstract class to represent An individual fragment\n * which has a name from a parse ABI.\n */\nexport class NamedFragment extends Fragment {\n /**\n * The name of the fragment.\n */\n name;\n /**\n * @private\n */\n constructor(guard, type, name, inputs) {\n super(guard, type, inputs);\n assertArgument(typeof (name) === \"string\" && name.match(regexId), \"invalid identifier\", \"name\", name);\n inputs = Object.freeze(inputs.slice());\n defineProperties(this, { name });\n }\n}\nfunction joinParams(format, params) {\n return \"(\" + params.map((p) => p.format(format)).join((format === \"full\") ? \", \" : \",\") + \")\";\n}\n/**\n * A Fragment which represents a //Custom Error//.\n */\nexport class ErrorFragment extends NamedFragment {\n /**\n * @private\n */\n constructor(guard, name, inputs) {\n super(guard, \"error\", name, inputs);\n Object.defineProperty(this, internal, { value: ErrorFragmentInternal });\n }\n /**\n * The Custom Error selector.\n */\n get selector() {\n return id(this.format(\"sighash\")).substring(0, 10);\n }\n /**\n * Returns a string representation of this fragment as %%format%%.\n */\n format(format) {\n if (format == null) {\n format = \"sighash\";\n }\n if (format === \"json\") {\n return JSON.stringify({\n type: \"error\",\n name: this.name,\n inputs: this.inputs.map((input) => JSON.parse(input.format(format))),\n });\n }\n const result = [];\n if (format !== \"sighash\") {\n result.push(\"error\");\n }\n result.push(this.name + joinParams(format, this.inputs));\n return result.join(\" \");\n }\n /**\n * Returns a new **ErrorFragment** for %%obj%%.\n */\n static from(obj) {\n if (ErrorFragment.isFragment(obj)) {\n return obj;\n }\n if (typeof (obj) === \"string\") {\n return ErrorFragment.from(lex(obj));\n }\n else if (obj instanceof TokenString) {\n const name = consumeName(\"error\", obj);\n const inputs = consumeParams(obj);\n consumeEoi(obj);\n return new ErrorFragment(_guard, name, inputs);\n }\n return new ErrorFragment(_guard, obj.name, obj.inputs ? obj.inputs.map(ParamType.from) : []);\n }\n /**\n * Returns ``true`` and provides a type guard if %%value%% is an\n * **ErrorFragment**.\n */\n static isFragment(value) {\n return (value && value[internal] === ErrorFragmentInternal);\n }\n}\n/**\n * A Fragment which represents an Event.\n */\nexport class EventFragment extends NamedFragment {\n /**\n * Whether this event is anonymous.\n */\n anonymous;\n /**\n * @private\n */\n constructor(guard, name, inputs, anonymous) {\n super(guard, \"event\", name, inputs);\n Object.defineProperty(this, internal, { value: EventFragmentInternal });\n defineProperties(this, { anonymous });\n }\n /**\n * The Event topic hash.\n */\n get topicHash() {\n return id(this.format(\"sighash\"));\n }\n /**\n * Returns a string representation of this event as %%format%%.\n */\n format(format) {\n if (format == null) {\n format = \"sighash\";\n }\n if (format === \"json\") {\n return JSON.stringify({\n type: \"event\",\n anonymous: this.anonymous,\n name: this.name,\n inputs: this.inputs.map((i) => JSON.parse(i.format(format)))\n });\n }\n const result = [];\n if (format !== \"sighash\") {\n result.push(\"event\");\n }\n result.push(this.name + joinParams(format, this.inputs));\n if (format !== \"sighash\" && this.anonymous) {\n result.push(\"anonymous\");\n }\n return result.join(\" \");\n }\n /**\n * Return the topic hash for an event with %%name%% and %%params%%.\n */\n static getTopicHash(name, params) {\n params = (params || []).map((p) => ParamType.from(p));\n const fragment = new EventFragment(_guard, name, params, false);\n return fragment.topicHash;\n }\n /**\n * Returns a new **EventFragment** for %%obj%%.\n */\n static from(obj) {\n if (EventFragment.isFragment(obj)) {\n return obj;\n }\n if (typeof (obj) === \"string\") {\n try {\n return EventFragment.from(lex(obj));\n }\n catch (error) {\n assertArgument(false, \"invalid event fragment\", \"obj\", obj);\n }\n }\n else if (obj instanceof TokenString) {\n const name = consumeName(\"event\", obj);\n const inputs = consumeParams(obj, true);\n const anonymous = !!consumeKeywords(obj, setify([\"anonymous\"])).has(\"anonymous\");\n consumeEoi(obj);\n return new EventFragment(_guard, name, inputs, anonymous);\n }\n return new EventFragment(_guard, obj.name, obj.inputs ? obj.inputs.map((p) => ParamType.from(p, true)) : [], !!obj.anonymous);\n }\n /**\n * Returns ``true`` and provides a type guard if %%value%% is an\n * **EventFragment**.\n */\n static isFragment(value) {\n return (value && value[internal] === EventFragmentInternal);\n }\n}\n/**\n * A Fragment which represents a constructor.\n */\nexport class ConstructorFragment extends Fragment {\n /**\n * Whether the constructor can receive an endowment.\n */\n payable;\n /**\n * The recommended gas limit for deployment or ``null``.\n */\n gas;\n /**\n * @private\n */\n constructor(guard, type, inputs, payable, gas) {\n super(guard, type, inputs);\n Object.defineProperty(this, internal, { value: ConstructorFragmentInternal });\n defineProperties(this, { payable, gas });\n }\n /**\n * Returns a string representation of this constructor as %%format%%.\n */\n format(format) {\n assert(format != null && format !== \"sighash\", \"cannot format a constructor for sighash\", \"UNSUPPORTED_OPERATION\", { operation: \"format(sighash)\" });\n if (format === \"json\") {\n return JSON.stringify({\n type: \"constructor\",\n stateMutability: (this.payable ? \"payable\" : \"undefined\"),\n payable: this.payable,\n gas: ((this.gas != null) ? this.gas : undefined),\n inputs: this.inputs.map((i) => JSON.parse(i.format(format)))\n });\n }\n const result = [`constructor${joinParams(format, this.inputs)}`];\n if (this.payable) {\n result.push(\"payable\");\n }\n if (this.gas != null) {\n result.push(`@${this.gas.toString()}`);\n }\n return result.join(\" \");\n }\n /**\n * Returns a new **ConstructorFragment** for %%obj%%.\n */\n static from(obj) {\n if (ConstructorFragment.isFragment(obj)) {\n return obj;\n }\n if (typeof (obj) === \"string\") {\n try {\n return ConstructorFragment.from(lex(obj));\n }\n catch (error) {\n assertArgument(false, \"invalid constuctor fragment\", \"obj\", obj);\n }\n }\n else if (obj instanceof TokenString) {\n consumeKeywords(obj, setify([\"constructor\"]));\n const inputs = consumeParams(obj);\n const payable = !!consumeKeywords(obj, KwVisibDeploy).has(\"payable\");\n const gas = consumeGas(obj);\n consumeEoi(obj);\n return new ConstructorFragment(_guard, \"constructor\", inputs, payable, gas);\n }\n return new ConstructorFragment(_guard, \"constructor\", obj.inputs ? obj.inputs.map(ParamType.from) : [], !!obj.payable, (obj.gas != null) ? obj.gas : null);\n }\n /**\n * Returns ``true`` and provides a type guard if %%value%% is a\n * **ConstructorFragment**.\n */\n static isFragment(value) {\n return (value && value[internal] === ConstructorFragmentInternal);\n }\n}\n/**\n * A Fragment which represents a method.\n */\nexport class FallbackFragment extends Fragment {\n /**\n * If the function can be sent value during invocation.\n */\n payable;\n constructor(guard, inputs, payable) {\n super(guard, \"fallback\", inputs);\n Object.defineProperty(this, internal, { value: FallbackFragmentInternal });\n defineProperties(this, { payable });\n }\n /**\n * Returns a string representation of this fallback as %%format%%.\n */\n format(format) {\n const type = ((this.inputs.length === 0) ? \"receive\" : \"fallback\");\n if (format === \"json\") {\n const stateMutability = (this.payable ? \"payable\" : \"nonpayable\");\n return JSON.stringify({ type, stateMutability });\n }\n return `${type}()${this.payable ? \" payable\" : \"\"}`;\n }\n /**\n * Returns a new **FallbackFragment** for %%obj%%.\n */\n static from(obj) {\n if (FallbackFragment.isFragment(obj)) {\n return obj;\n }\n if (typeof (obj) === \"string\") {\n try {\n return FallbackFragment.from(lex(obj));\n }\n catch (error) {\n assertArgument(false, \"invalid fallback fragment\", \"obj\", obj);\n }\n }\n else if (obj instanceof TokenString) {\n const errorObj = obj.toString();\n const topIsValid = obj.peekKeyword(setify([\"fallback\", \"receive\"]));\n assertArgument(topIsValid, \"type must be fallback or receive\", \"obj\", errorObj);\n const type = obj.popKeyword(setify([\"fallback\", \"receive\"]));\n // receive()\n if (type === \"receive\") {\n const inputs = consumeParams(obj);\n assertArgument(inputs.length === 0, `receive cannot have arguments`, \"obj.inputs\", inputs);\n consumeKeywords(obj, setify([\"payable\"]));\n consumeEoi(obj);\n return new FallbackFragment(_guard, [], true);\n }\n // fallback() [payable]\n // fallback(bytes) [payable] returns (bytes)\n let inputs = consumeParams(obj);\n if (inputs.length) {\n assertArgument(inputs.length === 1 && inputs[0].type === \"bytes\", \"invalid fallback inputs\", \"obj.inputs\", inputs.map((i) => i.format(\"minimal\")).join(\", \"));\n }\n else {\n inputs = [ParamType.from(\"bytes\")];\n }\n const mutability = consumeMutability(obj);\n assertArgument(mutability === \"nonpayable\" || mutability === \"payable\", \"fallback cannot be constants\", \"obj.stateMutability\", mutability);\n if (consumeKeywords(obj, setify([\"returns\"])).has(\"returns\")) {\n const outputs = consumeParams(obj);\n assertArgument(outputs.length === 1 && outputs[0].type === \"bytes\", \"invalid fallback outputs\", \"obj.outputs\", outputs.map((i) => i.format(\"minimal\")).join(\", \"));\n }\n consumeEoi(obj);\n return new FallbackFragment(_guard, inputs, mutability === \"payable\");\n }\n if (obj.type === \"receive\") {\n return new FallbackFragment(_guard, [], true);\n }\n if (obj.type === \"fallback\") {\n const inputs = [ParamType.from(\"bytes\")];\n const payable = (obj.stateMutability === \"payable\");\n return new FallbackFragment(_guard, inputs, payable);\n }\n assertArgument(false, \"invalid fallback description\", \"obj\", obj);\n }\n /**\n * Returns ``true`` and provides a type guard if %%value%% is a\n * **FallbackFragment**.\n */\n static isFragment(value) {\n return (value && value[internal] === FallbackFragmentInternal);\n }\n}\n/**\n * A Fragment which represents a method.\n */\nexport class FunctionFragment extends NamedFragment {\n /**\n * If the function is constant (e.g. ``pure`` or ``view`` functions).\n */\n constant;\n /**\n * The returned types for the result of calling this function.\n */\n outputs;\n /**\n * The state mutability (e.g. ``payable``, ``nonpayable``, ``view``\n * or ``pure``)\n */\n stateMutability;\n /**\n * If the function can be sent value during invocation.\n */\n payable;\n /**\n * The recommended gas limit to send when calling this function.\n */\n gas;\n /**\n * @private\n */\n constructor(guard, name, stateMutability, inputs, outputs, gas) {\n super(guard, \"function\", name, inputs);\n Object.defineProperty(this, internal, { value: FunctionFragmentInternal });\n outputs = Object.freeze(outputs.slice());\n const constant = (stateMutability === \"view\" || stateMutability === \"pure\");\n const payable = (stateMutability === \"payable\");\n defineProperties(this, { constant, gas, outputs, payable, stateMutability });\n }\n /**\n * The Function selector.\n */\n get selector() {\n return id(this.format(\"sighash\")).substring(0, 10);\n }\n /**\n * Returns a string representation of this function as %%format%%.\n */\n format(format) {\n if (format == null) {\n format = \"sighash\";\n }\n if (format === \"json\") {\n return JSON.stringify({\n type: \"function\",\n name: this.name,\n constant: this.constant,\n stateMutability: ((this.stateMutability !== \"nonpayable\") ? this.stateMutability : undefined),\n payable: this.payable,\n gas: ((this.gas != null) ? this.gas : undefined),\n inputs: this.inputs.map((i) => JSON.parse(i.format(format))),\n outputs: this.outputs.map((o) => JSON.parse(o.format(format))),\n });\n }\n const result = [];\n if (format !== \"sighash\") {\n result.push(\"function\");\n }\n result.push(this.name + joinParams(format, this.inputs));\n if (format !== \"sighash\") {\n if (this.stateMutability !== \"nonpayable\") {\n result.push(this.stateMutability);\n }\n if (this.outputs && this.outputs.length) {\n result.push(\"returns\");\n result.push(joinParams(format, this.outputs));\n }\n if (this.gas != null) {\n result.push(`@${this.gas.toString()}`);\n }\n }\n return result.join(\" \");\n }\n /**\n * Return the selector for a function with %%name%% and %%params%%.\n */\n static getSelector(name, params) {\n params = (params || []).map((p) => ParamType.from(p));\n const fragment = new FunctionFragment(_guard, name, \"view\", params, [], null);\n return fragment.selector;\n }\n /**\n * Returns a new **FunctionFragment** for %%obj%%.\n */\n static from(obj) {\n if (FunctionFragment.isFragment(obj)) {\n return obj;\n }\n if (typeof (obj) === \"string\") {\n try {\n return FunctionFragment.from(lex(obj));\n }\n catch (error) {\n assertArgument(false, \"invalid function fragment\", \"obj\", obj);\n }\n }\n else if (obj instanceof TokenString) {\n const name = consumeName(\"function\", obj);\n const inputs = consumeParams(obj);\n const mutability = consumeMutability(obj);\n let outputs = [];\n if (consumeKeywords(obj, setify([\"returns\"])).has(\"returns\")) {\n outputs = consumeParams(obj);\n }\n const gas = consumeGas(obj);\n consumeEoi(obj);\n return new FunctionFragment(_guard, name, mutability, inputs, outputs, gas);\n }\n let stateMutability = obj.stateMutability;\n // Use legacy Solidity ABI logic if stateMutability is missing\n if (stateMutability == null) {\n stateMutability = \"payable\";\n if (typeof (obj.constant) === \"boolean\") {\n stateMutability = \"view\";\n if (!obj.constant) {\n stateMutability = \"payable\";\n if (typeof (obj.payable) === \"boolean\" && !obj.payable) {\n stateMutability = \"nonpayable\";\n }\n }\n }\n else if (typeof (obj.payable) === \"boolean\" && !obj.payable) {\n stateMutability = \"nonpayable\";\n }\n }\n // @TODO: verifyState for stateMutability (e.g. throw if\n // payable: false but stateMutability is \"nonpayable\")\n return new FunctionFragment(_guard, obj.name, stateMutability, obj.inputs ? obj.inputs.map(ParamType.from) : [], obj.outputs ? obj.outputs.map(ParamType.from) : [], (obj.gas != null) ? obj.gas : null);\n }\n /**\n * Returns ``true`` and provides a type guard if %%value%% is a\n * **FunctionFragment**.\n */\n static isFragment(value) {\n return (value && value[internal] === FunctionFragmentInternal);\n }\n}\n/**\n * A Fragment which represents a structure.\n */\nexport class StructFragment extends NamedFragment {\n /**\n * @private\n */\n constructor(guard, name, inputs) {\n super(guard, \"struct\", name, inputs);\n Object.defineProperty(this, internal, { value: StructFragmentInternal });\n }\n /**\n * Returns a string representation of this struct as %%format%%.\n */\n format() {\n throw new Error(\"@TODO\");\n }\n /**\n * Returns a new **StructFragment** for %%obj%%.\n */\n static from(obj) {\n if (typeof (obj) === \"string\") {\n try {\n return StructFragment.from(lex(obj));\n }\n catch (error) {\n assertArgument(false, \"invalid struct fragment\", \"obj\", obj);\n }\n }\n else if (obj instanceof TokenString) {\n const name = consumeName(\"struct\", obj);\n const inputs = consumeParams(obj);\n consumeEoi(obj);\n return new StructFragment(_guard, name, inputs);\n }\n return new StructFragment(_guard, obj.name, obj.inputs ? obj.inputs.map(ParamType.from) : []);\n }\n // @TODO: fix this return type\n /**\n * Returns ``true`` and provides a type guard if %%value%% is a\n * **StructFragment**.\n */\n static isFragment(value) {\n return (value && value[internal] === StructFragmentInternal);\n }\n}\n//# sourceMappingURL=fragments.js.map"],"names":["result","value","type","indexed","name","inputs"],"mappings":"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","x_google_ignoreList":[0]}
@@ -37,6 +37,8 @@ export interface Connection {
37
37
  closedReason?: string;
38
38
  closeMethod?: string;
39
39
  uniqueRequestKey?: string;
40
+ originTopicId?: string;
41
+ processed: boolean;
40
42
  }
41
43
  /**
42
44
  * Options for the connections manager
@@ -46,11 +48,112 @@ export interface ConnectionsManagerOptions {
46
48
  filterPendingAccountIds?: string[];
47
49
  baseClient: HCS10BaseClient;
48
50
  }
51
+ /**
52
+ * Defines the interface for a connections manager that handles HCS-10 connections
53
+ */
54
+ export interface IConnectionsManager {
55
+ /**
56
+ * Fetches and processes connection data using the configured client
57
+ * @param accountId - The account ID to fetch connection data for
58
+ * @returns A promise that resolves to an array of Connection objects
59
+ */
60
+ fetchConnectionData(accountId: string): Promise<Connection[]>;
61
+ /**
62
+ * Process outbound messages to track connection requests and confirmations
63
+ * @param messages - The messages to process
64
+ * @param accountId - The account ID that sent the messages
65
+ * @returns Array of connections after processing
66
+ */
67
+ processOutboundMessages(messages: HCSMessage[], accountId: string): Connection[];
68
+ /**
69
+ * Process inbound messages to track connection requests and confirmations
70
+ * @param messages - The messages to process
71
+ * @returns Array of connections after processing
72
+ */
73
+ processInboundMessages(messages: HCSMessage[]): Connection[];
74
+ /**
75
+ * Process connection topic messages to update last activity time
76
+ * @param connectionTopicId - The topic ID of the connection
77
+ * @param messages - The messages to process
78
+ * @returns The updated connection or undefined if not found
79
+ */
80
+ processConnectionMessages(connectionTopicId: string, messages: HCSMessage[]): Connection | undefined;
81
+ /**
82
+ * Adds or updates profile information for a connection
83
+ * @param accountId - The account ID to add profile info for
84
+ * @param profile - The profile information
85
+ */
86
+ addProfileInfo(accountId: string, profile: any): void;
87
+ /**
88
+ * Gets all connections
89
+ * @returns Array of all connections that should be visible
90
+ */
91
+ getAllConnections(): Connection[];
92
+ /**
93
+ * Gets all pending connection requests
94
+ * @returns Array of pending connection requests
95
+ */
96
+ getPendingRequests(): Connection[];
97
+ /**
98
+ * Gets all active (established) connections
99
+ * @returns Array of active connections
100
+ */
101
+ getActiveConnections(): Connection[];
102
+ /**
103
+ * Gets all connections needing confirmation
104
+ * @returns Array of connections needing confirmation
105
+ */
106
+ getConnectionsNeedingConfirmation(): Connection[];
107
+ /**
108
+ * Gets a connection by its topic ID
109
+ * @param connectionTopicId - The topic ID to look up
110
+ * @returns The connection with the given topic ID, or undefined if not found
111
+ */
112
+ getConnectionByTopicId(connectionTopicId: string): Connection | undefined;
113
+ /**
114
+ * Gets a connection by account ID
115
+ * @param accountId - The account ID to look up
116
+ * @returns The connection with the given account ID, or undefined if not found
117
+ */
118
+ getConnectionByAccountId(accountId: string): Connection | undefined;
119
+ /**
120
+ * Gets all connections for a specific account ID
121
+ * @param accountId - The account ID to look up
122
+ * @returns Array of connections for the given account ID
123
+ */
124
+ getConnectionsByAccountId(accountId: string): Connection[];
125
+ /**
126
+ * Updates or adds a connection
127
+ * @param connection - The connection to update or add
128
+ */
129
+ updateOrAddConnection(connection: Connection): void;
130
+ /**
131
+ * Clears all tracked connections and requests
132
+ */
133
+ clearAll(): void;
134
+ /**
135
+ * Checks if a given connection request has been processed already
136
+ * This uses a combination of topic ID and request ID to uniquely identify requests
137
+ *
138
+ * @param inboundTopicId - The inbound topic ID where the request was received
139
+ * @param requestId - The sequence number (request ID)
140
+ * @returns True if this specific request has been processed, false otherwise
141
+ */
142
+ isConnectionRequestProcessed(inboundTopicId: string, requestId: number): boolean;
143
+ /**
144
+ * Marks a specific connection request as processed
145
+ *
146
+ * @param inboundTopicId - The inbound topic ID where the request was received
147
+ * @param requestId - The sequence number (request ID)
148
+ * @returns True if a matching connection was found and marked, false otherwise
149
+ */
150
+ markConnectionRequestProcessed(inboundTopicId: string, requestId: number): boolean;
151
+ }
49
152
  /**
50
153
  * ConnectionsManager provides a unified way to track and manage HCS-10 connections
51
154
  * across different applications. It works with both frontend and backend implementations.
52
155
  */
53
- export declare class ConnectionsManager {
156
+ export declare class ConnectionsManager implements IConnectionsManager {
54
157
  private logger;
55
158
  private connections;
56
159
  private pendingRequests;
@@ -72,6 +175,12 @@ export declare class ConnectionsManager {
72
175
  * that might not be visible in our local messages
73
176
  */
74
177
  private checkTargetInboundTopicsForConfirmations;
178
+ /**
179
+ * Checks target agents' inbound topics for confirmations of our outbound connection requests
180
+ * This complements checkTargetInboundTopicsForConfirmations by looking for confirmations
181
+ * that might have been sent to the target agent's inbound topic rather than our own
182
+ */
183
+ private checkOutboundRequestsForConfirmations;
75
184
  /**
76
185
  * Fetches profiles for all connected accounts
77
186
  * @param accountId - The account ID making the request
@@ -105,10 +214,9 @@ export declare class ConnectionsManager {
105
214
  /**
106
215
  * Process inbound messages to track connection requests and confirmations
107
216
  * @param messages - The messages to process
108
- * @param accountId - The account ID that received the messages
109
217
  * @returns Array of connections after processing
110
218
  */
111
- processInboundMessages(messages: HCSMessage[], accountId: string): Connection[];
219
+ processInboundMessages(messages: HCSMessage[]): Connection[];
112
220
  /**
113
221
  * Process connection topic messages to update last activity time
114
222
  * @param connectionTopicId - The topic ID of the connection
@@ -154,12 +262,6 @@ export declare class ConnectionsManager {
154
262
  * @returns The connection with the given topic ID, or undefined if not found
155
263
  */
156
264
  getConnectionByTopicId(connectionTopicId: string): Connection | undefined;
157
- /**
158
- * Gets a connection by request ID
159
- * @param requestId - The request ID to look up
160
- * @returns The connection with the given request ID, or undefined if not found
161
- */
162
- getConnection(requestId: number, inboundTopicId: string): Connection | undefined;
163
265
  /**
164
266
  * Gets a connection by account ID
165
267
  * @param accountId - The account ID to look up
@@ -181,5 +283,22 @@ export declare class ConnectionsManager {
181
283
  * Clears all tracked connections and requests
182
284
  */
183
285
  clearAll(): void;
286
+ /**
287
+ * Checks if a given connection request has been processed already
288
+ * This uses a combination of topic ID and request ID to uniquely identify requests
289
+ *
290
+ * @param inboundTopicId - The inbound topic ID where the request was received
291
+ * @param requestId - The sequence number (request ID)
292
+ * @returns True if this specific request has been processed, false otherwise
293
+ */
294
+ isConnectionRequestProcessed(inboundTopicId: string, requestId: number): boolean;
295
+ /**
296
+ * Marks a specific connection request as processed
297
+ *
298
+ * @param inboundTopicId - The inbound topic ID where the request was received
299
+ * @param requestId - The sequence number (request ID)
300
+ * @returns True if a matching connection was found and marked, false otherwise
301
+ */
302
+ markConnectionRequestProcessed(inboundTopicId: string, requestId: number): boolean;
184
303
  }
185
304
  //# sourceMappingURL=connections-manager.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"connections-manager.d.ts","sourceRoot":"","sources":["../../../src/hcs-10/connections-manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"connections-manager.d.ts","sourceRoot":"","sources":["../../../src/hcs-10/connections-manager.ts"],"names":[],"mappings":"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"}