@hashgraphonline/standards-sdk 0.0.58 → 0.0.60
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/es/hcs-10/agent-builder.d.ts +2 -0
- package/dist/es/hcs-10/agent-builder.d.ts.map +1 -1
- package/dist/es/hcs-10/base-client.d.ts +2 -1
- package/dist/es/hcs-10/base-client.d.ts.map +1 -1
- package/dist/es/hcs-10/browser.d.ts +1 -1
- package/dist/es/hcs-10/browser.d.ts.map +1 -1
- package/dist/es/hcs-10/sdk.d.ts +2 -2
- package/dist/es/hcs-10/sdk.d.ts.map +1 -1
- package/dist/es/hcs-10/types.d.ts +1 -18
- package/dist/es/hcs-10/types.d.ts.map +1 -1
- package/dist/es/standards-sdk.es10.js +12 -9
- package/dist/es/standards-sdk.es10.js.map +1 -1
- package/dist/es/standards-sdk.es100.js +144 -17
- package/dist/es/standards-sdk.es100.js.map +1 -1
- package/dist/es/standards-sdk.es101.js +86 -39
- package/dist/es/standards-sdk.es101.js.map +1 -1
- package/dist/es/standards-sdk.es102.js +79 -13
- package/dist/es/standards-sdk.es102.js.map +1 -1
- package/dist/es/standards-sdk.es103.js +28 -57
- package/dist/es/standards-sdk.es103.js.map +1 -1
- package/dist/es/standards-sdk.es104.js +5 -1288
- package/dist/es/standards-sdk.es104.js.map +1 -1
- package/dist/es/standards-sdk.es105.js +153 -26
- package/dist/es/standards-sdk.es105.js.map +1 -1
- package/dist/es/standards-sdk.es106.js +22 -5
- package/dist/es/standards-sdk.es106.js.map +1 -1
- package/dist/es/standards-sdk.es107.js +781 -147
- package/dist/es/standards-sdk.es107.js.map +1 -1
- package/dist/es/standards-sdk.es108.js +166 -785
- package/dist/es/standards-sdk.es108.js.map +1 -1
- package/dist/es/standards-sdk.es109.js +2 -2
- package/dist/es/standards-sdk.es110.js +19 -25
- package/dist/es/standards-sdk.es110.js.map +1 -1
- package/dist/es/standards-sdk.es111.js +24 -23
- package/dist/es/standards-sdk.es111.js.map +1 -1
- package/dist/es/standards-sdk.es112.js +23 -35
- package/dist/es/standards-sdk.es112.js.map +1 -1
- package/dist/es/standards-sdk.es113.js +36 -19
- package/dist/es/standards-sdk.es113.js.map +1 -1
- package/dist/es/standards-sdk.es12.js.map +1 -1
- package/dist/es/standards-sdk.es13.js +1 -1
- package/dist/es/standards-sdk.es13.js.map +1 -1
- package/dist/es/standards-sdk.es14.js +5 -21
- package/dist/es/standards-sdk.es14.js.map +1 -1
- package/dist/es/standards-sdk.es17.js +1 -1
- package/dist/es/standards-sdk.es18.js +2 -2
- package/dist/es/standards-sdk.es22.js +36 -6627
- package/dist/es/standards-sdk.es22.js.map +1 -1
- package/dist/es/standards-sdk.es23.js +48 -36
- package/dist/es/standards-sdk.es23.js.map +1 -1
- package/dist/es/standards-sdk.es24.js +6600 -21
- package/dist/es/standards-sdk.es24.js.map +1 -1
- package/dist/es/standards-sdk.es26.js +5 -1041
- package/dist/es/standards-sdk.es26.js.map +1 -1
- package/dist/es/standards-sdk.es27.js +1041 -5
- package/dist/es/standards-sdk.es27.js.map +1 -1
- package/dist/es/standards-sdk.es36.js +5 -5
- package/dist/es/standards-sdk.es38.js +3 -3
- package/dist/es/standards-sdk.es4.js +1 -1
- package/dist/es/standards-sdk.es48.js +1 -1
- package/dist/es/standards-sdk.es49.js +3 -3
- package/dist/es/standards-sdk.es5.js +13 -9
- package/dist/es/standards-sdk.es5.js.map +1 -1
- package/dist/es/standards-sdk.es52.js +3 -31
- package/dist/es/standards-sdk.es52.js.map +1 -1
- package/dist/es/standards-sdk.es53.js +25 -56
- package/dist/es/standards-sdk.es53.js.map +1 -1
- package/dist/es/standards-sdk.es54.js +58 -45
- package/dist/es/standards-sdk.es54.js.map +1 -1
- package/dist/es/standards-sdk.es55.js +48 -8
- package/dist/es/standards-sdk.es55.js.map +1 -1
- package/dist/es/standards-sdk.es56.js +8 -63
- package/dist/es/standards-sdk.es56.js.map +1 -1
- package/dist/es/standards-sdk.es57.js +64 -5
- package/dist/es/standards-sdk.es57.js.map +1 -1
- package/dist/es/standards-sdk.es58.js +6 -15
- package/dist/es/standards-sdk.es58.js.map +1 -1
- package/dist/es/standards-sdk.es59.js +15 -7
- package/dist/es/standards-sdk.es59.js.map +1 -1
- package/dist/es/standards-sdk.es60.js +6 -44
- package/dist/es/standards-sdk.es60.js.map +1 -1
- package/dist/es/standards-sdk.es61.js +45 -2
- package/dist/es/standards-sdk.es61.js.map +1 -1
- package/dist/es/standards-sdk.es62.js +2 -136
- package/dist/es/standards-sdk.es62.js.map +1 -1
- package/dist/es/standards-sdk.es63.js +123 -159
- package/dist/es/standards-sdk.es63.js.map +1 -1
- package/dist/es/standards-sdk.es64.js +172 -4
- package/dist/es/standards-sdk.es64.js.map +1 -1
- package/dist/es/standards-sdk.es65.js +3 -3
- package/dist/es/standards-sdk.es7.js +5 -1
- package/dist/es/standards-sdk.es7.js.map +1 -1
- package/dist/es/standards-sdk.es73.js +2 -2
- package/dist/es/standards-sdk.es74.js +5 -5
- package/dist/es/standards-sdk.es77.js +3 -34
- package/dist/es/standards-sdk.es77.js.map +1 -1
- package/dist/es/standards-sdk.es78.js +2 -33
- package/dist/es/standards-sdk.es78.js.map +1 -1
- package/dist/es/standards-sdk.es79.js +2 -9
- package/dist/es/standards-sdk.es79.js.map +1 -1
- package/dist/es/standards-sdk.es8.js +9 -4
- package/dist/es/standards-sdk.es8.js.map +1 -1
- package/dist/es/standards-sdk.es80.js +32 -32
- package/dist/es/standards-sdk.es80.js.map +1 -1
- package/dist/es/standards-sdk.es81.js +33 -3
- package/dist/es/standards-sdk.es81.js.map +1 -1
- package/dist/es/standards-sdk.es82.js +9 -2
- package/dist/es/standards-sdk.es82.js.map +1 -1
- package/dist/es/standards-sdk.es83.js +34 -2
- package/dist/es/standards-sdk.es83.js.map +1 -1
- package/dist/es/standards-sdk.es84.js +419 -2
- package/dist/es/standards-sdk.es84.js.map +1 -1
- package/dist/es/standards-sdk.es85.js +2 -419
- package/dist/es/standards-sdk.es85.js.map +1 -1
- package/dist/es/standards-sdk.es86.js +120 -2
- package/dist/es/standards-sdk.es86.js.map +1 -1
- package/dist/es/standards-sdk.es87.js +2 -120
- package/dist/es/standards-sdk.es87.js.map +1 -1
- package/dist/es/standards-sdk.es88.js +185 -74
- package/dist/es/standards-sdk.es88.js.map +1 -1
- package/dist/es/standards-sdk.es89.js +433 -18
- package/dist/es/standards-sdk.es89.js.map +1 -1
- package/dist/es/standards-sdk.es90.js +21 -144
- package/dist/es/standards-sdk.es90.js.map +1 -1
- package/dist/es/standards-sdk.es91.js +130 -82
- package/dist/es/standards-sdk.es91.js.map +1 -1
- package/dist/es/standards-sdk.es92.js +13 -169
- package/dist/es/standards-sdk.es92.js.map +1 -1
- package/dist/es/standards-sdk.es93.js +23 -189
- package/dist/es/standards-sdk.es93.js.map +1 -1
- package/dist/es/standards-sdk.es94.js +24 -433
- package/dist/es/standards-sdk.es94.js.map +1 -1
- package/dist/es/standards-sdk.es95.js +12 -16
- package/dist/es/standards-sdk.es95.js.map +1 -1
- package/dist/es/standards-sdk.es96.js +31 -126
- package/dist/es/standards-sdk.es96.js.map +1 -1
- package/dist/es/standards-sdk.es97.js +9 -9
- package/dist/es/standards-sdk.es97.js.map +1 -1
- package/dist/es/standards-sdk.es98.js +54 -22
- package/dist/es/standards-sdk.es98.js.map +1 -1
- package/dist/es/standards-sdk.es99.js +1280 -20
- package/dist/es/standards-sdk.es99.js.map +1 -1
- package/dist/es/utils/logger.d.ts.map +1 -1
- package/dist/umd/hcs-10/agent-builder.d.ts +2 -0
- package/dist/umd/hcs-10/agent-builder.d.ts.map +1 -1
- package/dist/umd/hcs-10/base-client.d.ts +2 -1
- package/dist/umd/hcs-10/base-client.d.ts.map +1 -1
- package/dist/umd/hcs-10/browser.d.ts +1 -1
- package/dist/umd/hcs-10/browser.d.ts.map +1 -1
- package/dist/umd/hcs-10/sdk.d.ts +2 -2
- package/dist/umd/hcs-10/sdk.d.ts.map +1 -1
- package/dist/umd/hcs-10/types.d.ts +1 -18
- package/dist/umd/hcs-10/types.d.ts.map +1 -1
- package/dist/umd/standards-sdk.umd.js +2 -2
- package/dist/umd/standards-sdk.umd.js.map +1 -1
- package/dist/umd/utils/logger.d.ts.map +1 -1
- package/package.json +4 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"standards-sdk.es27.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
|
|
1
|
+
{"version":3,"file":"standards-sdk.es27.js","sources":["../../node_modules/ethers/lib.esm/abi/interface.js"],"sourcesContent":["/**\n * The Interface class is a low-level class that accepts an\n * ABI and provides all the necessary functionality to encode\n * and decode paramaters to and results from methods, events\n * and errors.\n *\n * It also provides several convenience methods to automatically\n * search and find matching transactions and events to parse them.\n *\n * @_subsection api/abi:Interfaces [interfaces]\n */\nimport { keccak256 } from \"../crypto/index.js\";\nimport { id } from \"../hash/index.js\";\nimport { concat, dataSlice, getBigInt, getBytes, getBytesCopy, hexlify, zeroPadBytes, zeroPadValue, isHexString, defineProperties, assertArgument, toBeHex, assert } from \"../utils/index.js\";\nimport { AbiCoder } from \"./abi-coder.js\";\nimport { checkResultErrors, Result } from \"./coders/abstract-coder.js\";\nimport { ConstructorFragment, ErrorFragment, EventFragment, Fragment, FunctionFragment, ParamType } from \"./fragments.js\";\nimport { Typed } from \"./typed.js\";\nexport { checkResultErrors, Result };\n/**\n * When using the [[Interface-parseLog]] to automatically match a Log to its event\n * for parsing, a **LogDescription** is returned.\n */\nexport class LogDescription {\n /**\n * The matching fragment for the ``topic0``.\n */\n fragment;\n /**\n * The name of the Event.\n */\n name;\n /**\n * The full Event signature.\n */\n signature;\n /**\n * The topic hash for the Event.\n */\n topic;\n /**\n * The arguments passed into the Event with ``emit``.\n */\n args;\n /**\n * @_ignore:\n */\n constructor(fragment, topic, args) {\n const name = fragment.name, signature = fragment.format();\n defineProperties(this, {\n fragment, name, signature, topic, args\n });\n }\n}\n/**\n * When using the [[Interface-parseTransaction]] to automatically match\n * a transaction data to its function for parsing,\n * a **TransactionDescription** is returned.\n */\nexport class TransactionDescription {\n /**\n * The matching fragment from the transaction ``data``.\n */\n fragment;\n /**\n * The name of the Function from the transaction ``data``.\n */\n name;\n /**\n * The arguments passed to the Function from the transaction ``data``.\n */\n args;\n /**\n * The full Function signature from the transaction ``data``.\n */\n signature;\n /**\n * The selector for the Function from the transaction ``data``.\n */\n selector;\n /**\n * The ``value`` (in wei) from the transaction.\n */\n value;\n /**\n * @_ignore:\n */\n constructor(fragment, selector, args, value) {\n const name = fragment.name, signature = fragment.format();\n defineProperties(this, {\n fragment, name, args, signature, selector, value\n });\n }\n}\n/**\n * When using the [[Interface-parseError]] to automatically match an\n * error for a call result for parsing, an **ErrorDescription** is returned.\n */\nexport class ErrorDescription {\n /**\n * The matching fragment.\n */\n fragment;\n /**\n * The name of the Error.\n */\n name;\n /**\n * The arguments passed to the Error with ``revert``.\n */\n args;\n /**\n * The full Error signature.\n */\n signature;\n /**\n * The selector for the Error.\n */\n selector;\n /**\n * @_ignore:\n */\n constructor(fragment, selector, args) {\n const name = fragment.name, signature = fragment.format();\n defineProperties(this, {\n fragment, name, args, signature, selector\n });\n }\n}\n/**\n * An **Indexed** is used as a value when a value that does not\n * fit within a topic (i.e. not a fixed-length, 32-byte type). It\n * is the ``keccak256`` of the value, and used for types such as\n * arrays, tuples, bytes and strings.\n */\nexport class Indexed {\n /**\n * The ``keccak256`` of the value logged.\n */\n hash;\n /**\n * @_ignore:\n */\n _isIndexed;\n /**\n * Returns ``true`` if %%value%% is an **Indexed**.\n *\n * This provides a Type Guard for property access.\n */\n static isIndexed(value) {\n return !!(value && value._isIndexed);\n }\n /**\n * @_ignore:\n */\n constructor(hash) {\n defineProperties(this, { hash, _isIndexed: true });\n }\n}\n// https://docs.soliditylang.org/en/v0.8.13/control-structures.html?highlight=panic#panic-via-assert-and-error-via-require\nconst PanicReasons = {\n \"0\": \"generic panic\",\n \"1\": \"assert(false)\",\n \"17\": \"arithmetic overflow\",\n \"18\": \"division or modulo by zero\",\n \"33\": \"enum overflow\",\n \"34\": \"invalid encoded storage byte array accessed\",\n \"49\": \"out-of-bounds array access; popping on an empty array\",\n \"50\": \"out-of-bounds access of an array or bytesN\",\n \"65\": \"out of memory\",\n \"81\": \"uninitialized function\",\n};\nconst BuiltinErrors = {\n \"0x08c379a0\": {\n signature: \"Error(string)\",\n name: \"Error\",\n inputs: [\"string\"],\n reason: (message) => {\n return `reverted with reason string ${JSON.stringify(message)}`;\n }\n },\n \"0x4e487b71\": {\n signature: \"Panic(uint256)\",\n name: \"Panic\",\n inputs: [\"uint256\"],\n reason: (code) => {\n let reason = \"unknown panic code\";\n if (code >= 0 && code <= 0xff && PanicReasons[code.toString()]) {\n reason = PanicReasons[code.toString()];\n }\n return `reverted with panic code 0x${code.toString(16)} (${reason})`;\n }\n }\n};\n/**\n * An Interface abstracts many of the low-level details for\n * encoding and decoding the data on the blockchain.\n *\n * An ABI provides information on how to encode data to send to\n * a Contract, how to decode the results and events and how to\n * interpret revert errors.\n *\n * The ABI can be specified by [any supported format](InterfaceAbi).\n */\nexport class Interface {\n /**\n * All the Contract ABI members (i.e. methods, events, errors, etc).\n */\n fragments;\n /**\n * The Contract constructor.\n */\n deploy;\n /**\n * The Fallback method, if any.\n */\n fallback;\n /**\n * If receiving ether is supported.\n */\n receive;\n #errors;\n #events;\n #functions;\n // #structs: Map<string, StructFragment>;\n #abiCoder;\n /**\n * Create a new Interface for the %%fragments%%.\n */\n constructor(fragments) {\n let abi = [];\n if (typeof (fragments) === \"string\") {\n abi = JSON.parse(fragments);\n }\n else {\n abi = fragments;\n }\n this.#functions = new Map();\n this.#errors = new Map();\n this.#events = new Map();\n // this.#structs = new Map();\n const frags = [];\n for (const a of abi) {\n try {\n frags.push(Fragment.from(a));\n }\n catch (error) {\n console.log(`[Warning] Invalid Fragment ${JSON.stringify(a)}:`, error.message);\n }\n }\n defineProperties(this, {\n fragments: Object.freeze(frags)\n });\n let fallback = null;\n let receive = false;\n this.#abiCoder = this.getAbiCoder();\n // Add all fragments by their signature\n this.fragments.forEach((fragment, index) => {\n let bucket;\n switch (fragment.type) {\n case \"constructor\":\n if (this.deploy) {\n console.log(\"duplicate definition - constructor\");\n return;\n }\n //checkNames(fragment, \"input\", fragment.inputs);\n defineProperties(this, { deploy: fragment });\n return;\n case \"fallback\":\n if (fragment.inputs.length === 0) {\n receive = true;\n }\n else {\n assertArgument(!fallback || fragment.payable !== fallback.payable, \"conflicting fallback fragments\", `fragments[${index}]`, fragment);\n fallback = fragment;\n receive = fallback.payable;\n }\n return;\n case \"function\":\n //checkNames(fragment, \"input\", fragment.inputs);\n //checkNames(fragment, \"output\", (<FunctionFragment>fragment).outputs);\n bucket = this.#functions;\n break;\n case \"event\":\n //checkNames(fragment, \"input\", fragment.inputs);\n bucket = this.#events;\n break;\n case \"error\":\n bucket = this.#errors;\n break;\n default:\n return;\n }\n // Two identical entries; ignore it\n const signature = fragment.format();\n if (bucket.has(signature)) {\n return;\n }\n bucket.set(signature, fragment);\n });\n // If we do not have a constructor add a default\n if (!this.deploy) {\n defineProperties(this, {\n deploy: ConstructorFragment.from(\"constructor()\")\n });\n }\n defineProperties(this, { fallback, receive });\n }\n /**\n * Returns the entire Human-Readable ABI, as an array of\n * signatures, optionally as %%minimal%% strings, which\n * removes parameter names and unneceesary spaces.\n */\n format(minimal) {\n const format = (minimal ? \"minimal\" : \"full\");\n const abi = this.fragments.map((f) => f.format(format));\n return abi;\n }\n /**\n * Return the JSON-encoded ABI. This is the format Solidiy\n * returns.\n */\n formatJson() {\n const abi = this.fragments.map((f) => f.format(\"json\"));\n // We need to re-bundle the JSON fragments a bit\n return JSON.stringify(abi.map((j) => JSON.parse(j)));\n }\n /**\n * The ABI coder that will be used to encode and decode binary\n * data.\n */\n getAbiCoder() {\n return AbiCoder.defaultAbiCoder();\n }\n // Find a function definition by any means necessary (unless it is ambiguous)\n #getFunction(key, values, forceUnique) {\n // Selector\n if (isHexString(key)) {\n const selector = key.toLowerCase();\n for (const fragment of this.#functions.values()) {\n if (selector === fragment.selector) {\n return fragment;\n }\n }\n return null;\n }\n // It is a bare name, look up the function (will return null if ambiguous)\n if (key.indexOf(\"(\") === -1) {\n const matching = [];\n for (const [name, fragment] of this.#functions) {\n if (name.split(\"(\" /* fix:) */)[0] === key) {\n matching.push(fragment);\n }\n }\n if (values) {\n const lastValue = (values.length > 0) ? values[values.length - 1] : null;\n let valueLength = values.length;\n let allowOptions = true;\n if (Typed.isTyped(lastValue) && lastValue.type === \"overrides\") {\n allowOptions = false;\n valueLength--;\n }\n // Remove all matches that don't have a compatible length. The args\n // may contain an overrides, so the match may have n or n - 1 parameters\n for (let i = matching.length - 1; i >= 0; i--) {\n const inputs = matching[i].inputs.length;\n if (inputs !== valueLength && (!allowOptions || inputs !== valueLength - 1)) {\n matching.splice(i, 1);\n }\n }\n // Remove all matches that don't match the Typed signature\n for (let i = matching.length - 1; i >= 0; i--) {\n const inputs = matching[i].inputs;\n for (let j = 0; j < values.length; j++) {\n // Not a typed value\n if (!Typed.isTyped(values[j])) {\n continue;\n }\n // We are past the inputs\n if (j >= inputs.length) {\n if (values[j].type === \"overrides\") {\n continue;\n }\n matching.splice(i, 1);\n break;\n }\n // Make sure the value type matches the input type\n if (values[j].type !== inputs[j].baseType) {\n matching.splice(i, 1);\n break;\n }\n }\n }\n }\n // We found a single matching signature with an overrides, but the\n // last value is something that cannot possibly be an options\n if (matching.length === 1 && values && values.length !== matching[0].inputs.length) {\n const lastArg = values[values.length - 1];\n if (lastArg == null || Array.isArray(lastArg) || typeof (lastArg) !== \"object\") {\n matching.splice(0, 1);\n }\n }\n if (matching.length === 0) {\n return null;\n }\n if (matching.length > 1 && forceUnique) {\n const matchStr = matching.map((m) => JSON.stringify(m.format())).join(\", \");\n assertArgument(false, `ambiguous function description (i.e. matches ${matchStr})`, \"key\", key);\n }\n return matching[0];\n }\n // Normalize the signature and lookup the function\n const result = this.#functions.get(FunctionFragment.from(key).format());\n if (result) {\n return result;\n }\n return null;\n }\n /**\n * Get the function name for %%key%%, which may be a function selector,\n * function name or function signature that belongs to the ABI.\n */\n getFunctionName(key) {\n const fragment = this.#getFunction(key, null, false);\n assertArgument(fragment, \"no matching function\", \"key\", key);\n return fragment.name;\n }\n /**\n * Returns true if %%key%% (a function selector, function name or\n * function signature) is present in the ABI.\n *\n * In the case of a function name, the name may be ambiguous, so\n * accessing the [[FunctionFragment]] may require refinement.\n */\n hasFunction(key) {\n return !!this.#getFunction(key, null, false);\n }\n /**\n * Get the [[FunctionFragment]] for %%key%%, which may be a function\n * selector, function name or function signature that belongs to the ABI.\n *\n * If %%values%% is provided, it will use the Typed API to handle\n * ambiguous cases where multiple functions match by name.\n *\n * If the %%key%% and %%values%% do not refine to a single function in\n * the ABI, this will throw.\n */\n getFunction(key, values) {\n return this.#getFunction(key, values || null, true);\n }\n /**\n * Iterate over all functions, calling %%callback%%, sorted by their name.\n */\n forEachFunction(callback) {\n const names = Array.from(this.#functions.keys());\n names.sort((a, b) => a.localeCompare(b));\n for (let i = 0; i < names.length; i++) {\n const name = names[i];\n callback((this.#functions.get(name)), i);\n }\n }\n // Find an event definition by any means necessary (unless it is ambiguous)\n #getEvent(key, values, forceUnique) {\n // EventTopic\n if (isHexString(key)) {\n const eventTopic = key.toLowerCase();\n for (const fragment of this.#events.values()) {\n if (eventTopic === fragment.topicHash) {\n return fragment;\n }\n }\n return null;\n }\n // It is a bare name, look up the function (will return null if ambiguous)\n if (key.indexOf(\"(\") === -1) {\n const matching = [];\n for (const [name, fragment] of this.#events) {\n if (name.split(\"(\" /* fix:) */)[0] === key) {\n matching.push(fragment);\n }\n }\n if (values) {\n // Remove all matches that don't have a compatible length.\n for (let i = matching.length - 1; i >= 0; i--) {\n if (matching[i].inputs.length < values.length) {\n matching.splice(i, 1);\n }\n }\n // Remove all matches that don't match the Typed signature\n for (let i = matching.length - 1; i >= 0; i--) {\n const inputs = matching[i].inputs;\n for (let j = 0; j < values.length; j++) {\n // Not a typed value\n if (!Typed.isTyped(values[j])) {\n continue;\n }\n // Make sure the value type matches the input type\n if (values[j].type !== inputs[j].baseType) {\n matching.splice(i, 1);\n break;\n }\n }\n }\n }\n if (matching.length === 0) {\n return null;\n }\n if (matching.length > 1 && forceUnique) {\n const matchStr = matching.map((m) => JSON.stringify(m.format())).join(\", \");\n assertArgument(false, `ambiguous event description (i.e. matches ${matchStr})`, \"key\", key);\n }\n return matching[0];\n }\n // Normalize the signature and lookup the function\n const result = this.#events.get(EventFragment.from(key).format());\n if (result) {\n return result;\n }\n return null;\n }\n /**\n * Get the event name for %%key%%, which may be a topic hash,\n * event name or event signature that belongs to the ABI.\n */\n getEventName(key) {\n const fragment = this.#getEvent(key, null, false);\n assertArgument(fragment, \"no matching event\", \"key\", key);\n return fragment.name;\n }\n /**\n * Returns true if %%key%% (an event topic hash, event name or\n * event signature) is present in the ABI.\n *\n * In the case of an event name, the name may be ambiguous, so\n * accessing the [[EventFragment]] may require refinement.\n */\n hasEvent(key) {\n return !!this.#getEvent(key, null, false);\n }\n /**\n * Get the [[EventFragment]] for %%key%%, which may be a topic hash,\n * event name or event signature that belongs to the ABI.\n *\n * If %%values%% is provided, it will use the Typed API to handle\n * ambiguous cases where multiple events match by name.\n *\n * If the %%key%% and %%values%% do not refine to a single event in\n * the ABI, this will throw.\n */\n getEvent(key, values) {\n return this.#getEvent(key, values || null, true);\n }\n /**\n * Iterate over all events, calling %%callback%%, sorted by their name.\n */\n forEachEvent(callback) {\n const names = Array.from(this.#events.keys());\n names.sort((a, b) => a.localeCompare(b));\n for (let i = 0; i < names.length; i++) {\n const name = names[i];\n callback((this.#events.get(name)), i);\n }\n }\n /**\n * Get the [[ErrorFragment]] for %%key%%, which may be an error\n * selector, error name or error signature that belongs to the ABI.\n *\n * If %%values%% is provided, it will use the Typed API to handle\n * ambiguous cases where multiple errors match by name.\n *\n * If the %%key%% and %%values%% do not refine to a single error in\n * the ABI, this will throw.\n */\n getError(key, values) {\n if (isHexString(key)) {\n const selector = key.toLowerCase();\n if (BuiltinErrors[selector]) {\n return ErrorFragment.from(BuiltinErrors[selector].signature);\n }\n for (const fragment of this.#errors.values()) {\n if (selector === fragment.selector) {\n return fragment;\n }\n }\n return null;\n }\n // It is a bare name, look up the function (will return null if ambiguous)\n if (key.indexOf(\"(\") === -1) {\n const matching = [];\n for (const [name, fragment] of this.#errors) {\n if (name.split(\"(\" /* fix:) */)[0] === key) {\n matching.push(fragment);\n }\n }\n if (matching.length === 0) {\n if (key === \"Error\") {\n return ErrorFragment.from(\"error Error(string)\");\n }\n if (key === \"Panic\") {\n return ErrorFragment.from(\"error Panic(uint256)\");\n }\n return null;\n }\n else if (matching.length > 1) {\n const matchStr = matching.map((m) => JSON.stringify(m.format())).join(\", \");\n assertArgument(false, `ambiguous error description (i.e. ${matchStr})`, \"name\", key);\n }\n return matching[0];\n }\n // Normalize the signature and lookup the function\n key = ErrorFragment.from(key).format();\n if (key === \"Error(string)\") {\n return ErrorFragment.from(\"error Error(string)\");\n }\n if (key === \"Panic(uint256)\") {\n return ErrorFragment.from(\"error Panic(uint256)\");\n }\n const result = this.#errors.get(key);\n if (result) {\n return result;\n }\n return null;\n }\n /**\n * Iterate over all errors, calling %%callback%%, sorted by their name.\n */\n forEachError(callback) {\n const names = Array.from(this.#errors.keys());\n names.sort((a, b) => a.localeCompare(b));\n for (let i = 0; i < names.length; i++) {\n const name = names[i];\n callback((this.#errors.get(name)), i);\n }\n }\n // Get the 4-byte selector used by Solidity to identify a function\n /*\ngetSelector(fragment: ErrorFragment | FunctionFragment): string {\n if (typeof(fragment) === \"string\") {\n const matches: Array<Fragment> = [ ];\n\n try { matches.push(this.getFunction(fragment)); } catch (error) { }\n try { matches.push(this.getError(<string>fragment)); } catch (_) { }\n\n if (matches.length === 0) {\n logger.throwArgumentError(\"unknown fragment\", \"key\", fragment);\n } else if (matches.length > 1) {\n logger.throwArgumentError(\"ambiguous fragment matches function and error\", \"key\", fragment);\n }\n\n fragment = matches[0];\n }\n\n return dataSlice(id(fragment.format()), 0, 4);\n}\n */\n // Get the 32-byte topic hash used by Solidity to identify an event\n /*\n getEventTopic(fragment: EventFragment): string {\n //if (typeof(fragment) === \"string\") { fragment = this.getEvent(eventFragment); }\n return id(fragment.format());\n }\n */\n _decodeParams(params, data) {\n return this.#abiCoder.decode(params, data);\n }\n _encodeParams(params, values) {\n return this.#abiCoder.encode(params, values);\n }\n /**\n * Encodes a ``tx.data`` object for deploying the Contract with\n * the %%values%% as the constructor arguments.\n */\n encodeDeploy(values) {\n return this._encodeParams(this.deploy.inputs, values || []);\n }\n /**\n * Decodes the result %%data%% (e.g. from an ``eth_call``) for the\n * specified error (see [[getError]] for valid values for\n * %%key%%).\n *\n * Most developers should prefer the [[parseCallResult]] method instead,\n * which will automatically detect a ``CALL_EXCEPTION`` and throw the\n * corresponding error.\n */\n decodeErrorResult(fragment, data) {\n if (typeof (fragment) === \"string\") {\n const f = this.getError(fragment);\n assertArgument(f, \"unknown error\", \"fragment\", fragment);\n fragment = f;\n }\n assertArgument(dataSlice(data, 0, 4) === fragment.selector, `data signature does not match error ${fragment.name}.`, \"data\", data);\n return this._decodeParams(fragment.inputs, dataSlice(data, 4));\n }\n /**\n * Encodes the transaction revert data for a call result that\n * reverted from the the Contract with the sepcified %%error%%\n * (see [[getError]] for valid values for %%fragment%%) with the %%values%%.\n *\n * This is generally not used by most developers, unless trying to mock\n * a result from a Contract.\n */\n encodeErrorResult(fragment, values) {\n if (typeof (fragment) === \"string\") {\n const f = this.getError(fragment);\n assertArgument(f, \"unknown error\", \"fragment\", fragment);\n fragment = f;\n }\n return concat([\n fragment.selector,\n this._encodeParams(fragment.inputs, values || [])\n ]);\n }\n /**\n * Decodes the %%data%% from a transaction ``tx.data`` for\n * the function specified (see [[getFunction]] for valid values\n * for %%fragment%%).\n *\n * Most developers should prefer the [[parseTransaction]] method\n * instead, which will automatically detect the fragment.\n */\n decodeFunctionData(fragment, data) {\n if (typeof (fragment) === \"string\") {\n const f = this.getFunction(fragment);\n assertArgument(f, \"unknown function\", \"fragment\", fragment);\n fragment = f;\n }\n assertArgument(dataSlice(data, 0, 4) === fragment.selector, `data signature does not match function ${fragment.name}.`, \"data\", data);\n return this._decodeParams(fragment.inputs, dataSlice(data, 4));\n }\n /**\n * Encodes the ``tx.data`` for a transaction that calls the function\n * specified (see [[getFunction]] for valid values for %%fragment%%) with\n * the %%values%%.\n */\n encodeFunctionData(fragment, values) {\n if (typeof (fragment) === \"string\") {\n const f = this.getFunction(fragment);\n assertArgument(f, \"unknown function\", \"fragment\", fragment);\n fragment = f;\n }\n return concat([\n fragment.selector,\n this._encodeParams(fragment.inputs, values || [])\n ]);\n }\n /**\n * Decodes the result %%data%% (e.g. from an ``eth_call``) for the\n * specified function (see [[getFunction]] for valid values for\n * %%key%%).\n *\n * Most developers should prefer the [[parseCallResult]] method instead,\n * which will automatically detect a ``CALL_EXCEPTION`` and throw the\n * corresponding error.\n */\n decodeFunctionResult(fragment, data) {\n if (typeof (fragment) === \"string\") {\n const f = this.getFunction(fragment);\n assertArgument(f, \"unknown function\", \"fragment\", fragment);\n fragment = f;\n }\n let message = \"invalid length for result data\";\n const bytes = getBytesCopy(data);\n if ((bytes.length % 32) === 0) {\n try {\n return this.#abiCoder.decode(fragment.outputs, bytes);\n }\n catch (error) {\n message = \"could not decode result data\";\n }\n }\n // Call returned data with no error, but the data is junk\n assert(false, message, \"BAD_DATA\", {\n value: hexlify(bytes),\n info: { method: fragment.name, signature: fragment.format() }\n });\n }\n makeError(_data, tx) {\n const data = getBytes(_data, \"data\");\n const error = AbiCoder.getBuiltinCallException(\"call\", tx, data);\n // Not a built-in error; try finding a custom error\n const customPrefix = \"execution reverted (unknown custom error)\";\n if (error.message.startsWith(customPrefix)) {\n const selector = hexlify(data.slice(0, 4));\n const ef = this.getError(selector);\n if (ef) {\n try {\n const args = this.#abiCoder.decode(ef.inputs, data.slice(4));\n error.revert = {\n name: ef.name, signature: ef.format(), args\n };\n error.reason = error.revert.signature;\n error.message = `execution reverted: ${error.reason}`;\n }\n catch (e) {\n error.message = `execution reverted (coult not decode custom error)`;\n }\n }\n }\n // Add the invocation, if available\n const parsed = this.parseTransaction(tx);\n if (parsed) {\n error.invocation = {\n method: parsed.name,\n signature: parsed.signature,\n args: parsed.args\n };\n }\n return error;\n }\n /**\n * Encodes the result data (e.g. from an ``eth_call``) for the\n * specified function (see [[getFunction]] for valid values\n * for %%fragment%%) with %%values%%.\n *\n * This is generally not used by most developers, unless trying to mock\n * a result from a Contract.\n */\n encodeFunctionResult(fragment, values) {\n if (typeof (fragment) === \"string\") {\n const f = this.getFunction(fragment);\n assertArgument(f, \"unknown function\", \"fragment\", fragment);\n fragment = f;\n }\n return hexlify(this.#abiCoder.encode(fragment.outputs, values || []));\n }\n /*\n spelunk(inputs: Array<ParamType>, values: ReadonlyArray<any>, processfunc: (type: string, value: any) => Promise<any>): Promise<Array<any>> {\n const promises: Array<Promise<>> = [ ];\n const process = function(type: ParamType, value: any): any {\n if (type.baseType === \"array\") {\n return descend(type.child\n }\n if (type. === \"address\") {\n }\n };\n \n const descend = function (inputs: Array<ParamType>, values: ReadonlyArray<any>) {\n if (inputs.length !== values.length) { throw new Error(\"length mismatch\"); }\n \n };\n \n const result: Array<any> = [ ];\n values.forEach((value, index) => {\n if (value == null) {\n topics.push(null);\n } else if (param.baseType === \"array\" || param.baseType === \"tuple\") {\n logger.throwArgumentError(\"filtering with tuples or arrays not supported\", (\"contract.\" + param.name), value);\n } else if (Array.isArray(value)) {\n topics.push(value.map((value) => encodeTopic(param, value)));\n } else {\n topics.push(encodeTopic(param, value));\n }\n });\n }\n */\n // Create the filter for the event with search criteria (e.g. for eth_filterLog)\n encodeFilterTopics(fragment, values) {\n if (typeof (fragment) === \"string\") {\n const f = this.getEvent(fragment);\n assertArgument(f, \"unknown event\", \"eventFragment\", fragment);\n fragment = f;\n }\n assert(values.length <= fragment.inputs.length, `too many arguments for ${fragment.format()}`, \"UNEXPECTED_ARGUMENT\", { count: values.length, expectedCount: fragment.inputs.length });\n const topics = [];\n if (!fragment.anonymous) {\n topics.push(fragment.topicHash);\n }\n // @TODO: Use the coders for this; to properly support tuples, etc.\n const encodeTopic = (param, value) => {\n if (param.type === \"string\") {\n return id(value);\n }\n else if (param.type === \"bytes\") {\n return keccak256(hexlify(value));\n }\n if (param.type === \"bool\" && typeof (value) === \"boolean\") {\n value = (value ? \"0x01\" : \"0x00\");\n }\n else if (param.type.match(/^u?int/)) {\n value = toBeHex(value); // @TODO: Should this toTwos??\n }\n else if (param.type.match(/^bytes/)) {\n value = zeroPadBytes(value, 32);\n }\n else if (param.type === \"address\") {\n // Check addresses are valid\n this.#abiCoder.encode([\"address\"], [value]);\n }\n return zeroPadValue(hexlify(value), 32);\n };\n values.forEach((value, index) => {\n const param = fragment.inputs[index];\n if (!param.indexed) {\n assertArgument(value == null, \"cannot filter non-indexed parameters; must be null\", (\"contract.\" + param.name), value);\n return;\n }\n if (value == null) {\n topics.push(null);\n }\n else if (param.baseType === \"array\" || param.baseType === \"tuple\") {\n assertArgument(false, \"filtering with tuples or arrays not supported\", (\"contract.\" + param.name), value);\n }\n else if (Array.isArray(value)) {\n topics.push(value.map((value) => encodeTopic(param, value)));\n }\n else {\n topics.push(encodeTopic(param, value));\n }\n });\n // Trim off trailing nulls\n while (topics.length && topics[topics.length - 1] === null) {\n topics.pop();\n }\n return topics;\n }\n encodeEventLog(fragment, values) {\n if (typeof (fragment) === \"string\") {\n const f = this.getEvent(fragment);\n assertArgument(f, \"unknown event\", \"eventFragment\", fragment);\n fragment = f;\n }\n const topics = [];\n const dataTypes = [];\n const dataValues = [];\n if (!fragment.anonymous) {\n topics.push(fragment.topicHash);\n }\n assertArgument(values.length === fragment.inputs.length, \"event arguments/values mismatch\", \"values\", values);\n fragment.inputs.forEach((param, index) => {\n const value = values[index];\n if (param.indexed) {\n if (param.type === \"string\") {\n topics.push(id(value));\n }\n else if (param.type === \"bytes\") {\n topics.push(keccak256(value));\n }\n else if (param.baseType === \"tuple\" || param.baseType === \"array\") {\n // @TODO\n throw new Error(\"not implemented\");\n }\n else {\n topics.push(this.#abiCoder.encode([param.type], [value]));\n }\n }\n else {\n dataTypes.push(param);\n dataValues.push(value);\n }\n });\n return {\n data: this.#abiCoder.encode(dataTypes, dataValues),\n topics: topics\n };\n }\n // Decode a filter for the event and the search criteria\n decodeEventLog(fragment, data, topics) {\n if (typeof (fragment) === \"string\") {\n const f = this.getEvent(fragment);\n assertArgument(f, \"unknown event\", \"eventFragment\", fragment);\n fragment = f;\n }\n if (topics != null && !fragment.anonymous) {\n const eventTopic = fragment.topicHash;\n assertArgument(isHexString(topics[0], 32) && topics[0].toLowerCase() === eventTopic, \"fragment/topic mismatch\", \"topics[0]\", topics[0]);\n topics = topics.slice(1);\n }\n const indexed = [];\n const nonIndexed = [];\n const dynamic = [];\n fragment.inputs.forEach((param, index) => {\n if (param.indexed) {\n if (param.type === \"string\" || param.type === \"bytes\" || param.baseType === \"tuple\" || param.baseType === \"array\") {\n indexed.push(ParamType.from({ type: \"bytes32\", name: param.name }));\n dynamic.push(true);\n }\n else {\n indexed.push(param);\n dynamic.push(false);\n }\n }\n else {\n nonIndexed.push(param);\n dynamic.push(false);\n }\n });\n const resultIndexed = (topics != null) ? this.#abiCoder.decode(indexed, concat(topics)) : null;\n const resultNonIndexed = this.#abiCoder.decode(nonIndexed, data, true);\n //const result: (Array<any> & { [ key: string ]: any }) = [ ];\n const values = [];\n const keys = [];\n let nonIndexedIndex = 0, indexedIndex = 0;\n fragment.inputs.forEach((param, index) => {\n let value = null;\n if (param.indexed) {\n if (resultIndexed == null) {\n value = new Indexed(null);\n }\n else if (dynamic[index]) {\n value = new Indexed(resultIndexed[indexedIndex++]);\n }\n else {\n try {\n value = resultIndexed[indexedIndex++];\n }\n catch (error) {\n value = error;\n }\n }\n }\n else {\n try {\n value = resultNonIndexed[nonIndexedIndex++];\n }\n catch (error) {\n value = error;\n }\n }\n values.push(value);\n keys.push(param.name || null);\n });\n return Result.fromItems(values, keys);\n }\n /**\n * Parses a transaction, finding the matching function and extracts\n * the parameter values along with other useful function details.\n *\n * If the matching function cannot be found, return null.\n */\n parseTransaction(tx) {\n const data = getBytes(tx.data, \"tx.data\");\n const value = getBigInt((tx.value != null) ? tx.value : 0, \"tx.value\");\n const fragment = this.getFunction(hexlify(data.slice(0, 4)));\n if (!fragment) {\n return null;\n }\n const args = this.#abiCoder.decode(fragment.inputs, data.slice(4));\n return new TransactionDescription(fragment, fragment.selector, args, value);\n }\n parseCallResult(data) {\n throw new Error(\"@TODO\");\n }\n /**\n * Parses a receipt log, finding the matching event and extracts\n * the parameter values along with other useful event details.\n *\n * If the matching event cannot be found, returns null.\n */\n parseLog(log) {\n const fragment = this.getEvent(log.topics[0]);\n if (!fragment || fragment.anonymous) {\n return null;\n }\n // @TODO: If anonymous, and the only method, and the input count matches, should we parse?\n // Probably not, because just because it is the only event in the ABI does\n // not mean we have the full ABI; maybe just a fragment?\n return new LogDescription(fragment, fragment.topicHash, this.decodeEventLog(fragment, log.data, log.topics));\n }\n /**\n * Parses a revert data, finding the matching error and extracts\n * the parameter values along with other useful error details.\n *\n * If the matching error cannot be found, returns null.\n */\n parseError(data) {\n const hexData = hexlify(data);\n const fragment = this.getError(dataSlice(hexData, 0, 4));\n if (!fragment) {\n return null;\n }\n const args = this.#abiCoder.decode(fragment.inputs, dataSlice(hexData, 4));\n return new ErrorDescription(fragment, fragment.selector, args);\n }\n /**\n * Creates a new [[Interface]] from the ABI %%value%%.\n *\n * The %%value%% may be provided as an existing [[Interface]] object,\n * a JSON-encoded ABI or any Human-Readable ABI format.\n */\n static from(value) {\n // Already an Interface, which is immutable\n if (value instanceof Interface) {\n return value;\n }\n // JSON\n if (typeof (value) === \"string\") {\n return new Interface(JSON.parse(value));\n }\n // An Interface; possibly from another v6 instance\n if (typeof (value.formatJson) === \"function\") {\n return new Interface(value.formatJson());\n }\n // A legacy Interface; from an older version\n if (typeof (value.format) === \"function\") {\n return new Interface(value.format(\"json\"));\n }\n // Array of fragments\n return new Interface(value);\n }\n}\n//# sourceMappingURL=interface.js.map"],"names":["value"],"mappings":"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","x_google_ignoreList":[0]}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import utils from "./standards-sdk.es34.js";
|
|
2
|
-
import buildURL from "./standards-sdk.
|
|
3
|
-
import InterceptorManager from "./standards-sdk.
|
|
4
|
-
import dispatchRequest from "./standards-sdk.
|
|
2
|
+
import buildURL from "./standards-sdk.es53.js";
|
|
3
|
+
import InterceptorManager from "./standards-sdk.es54.js";
|
|
4
|
+
import dispatchRequest from "./standards-sdk.es55.js";
|
|
5
5
|
import mergeConfig from "./standards-sdk.es37.js";
|
|
6
|
-
import buildFullPath from "./standards-sdk.
|
|
7
|
-
import validator from "./standards-sdk.
|
|
6
|
+
import buildFullPath from "./standards-sdk.es56.js";
|
|
7
|
+
import validator from "./standards-sdk.es57.js";
|
|
8
8
|
import AxiosHeaders from "./standards-sdk.es48.js";
|
|
9
9
|
const validators = validator.validators;
|
|
10
10
|
class Axios {
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import utils from "./standards-sdk.es34.js";
|
|
2
2
|
import AxiosError from "./standards-sdk.es45.js";
|
|
3
|
-
import transitionalDefaults from "./standards-sdk.
|
|
3
|
+
import transitionalDefaults from "./standards-sdk.es58.js";
|
|
4
4
|
import toFormData from "./standards-sdk.es44.js";
|
|
5
|
-
import toURLEncodedForm from "./standards-sdk.
|
|
6
|
-
import platform from "./standards-sdk.
|
|
5
|
+
import toURLEncodedForm from "./standards-sdk.es59.js";
|
|
6
|
+
import platform from "./standards-sdk.es60.js";
|
|
7
7
|
import formDataToJSON from "./standards-sdk.es39.js";
|
|
8
8
|
function stringifySafely(rawValue, parser, encoder) {
|
|
9
9
|
if (utils.isString(rawValue)) {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { ContractId, AccountId } from "@hashgraph/sdk";
|
|
2
2
|
import { Logger } from "./standards-sdk.es14.js";
|
|
3
|
-
import { Interface } from "./standards-sdk.
|
|
3
|
+
import { Interface } from "./standards-sdk.es27.js";
|
|
4
4
|
class MapCache {
|
|
5
5
|
constructor() {
|
|
6
6
|
this.cache = /* @__PURE__ */ new Map();
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import utils from "./standards-sdk.es34.js";
|
|
2
|
-
import parseHeaders from "./standards-sdk.
|
|
2
|
+
import parseHeaders from "./standards-sdk.es61.js";
|
|
3
3
|
const $internals = Symbol("internals");
|
|
4
4
|
function normalizeHeader(header) {
|
|
5
5
|
return header && String(header).trim().toLowerCase();
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import utils from "./standards-sdk.es34.js";
|
|
2
|
-
import httpAdapter from "./standards-sdk.
|
|
3
|
-
import xhrAdapter from "./standards-sdk.
|
|
4
|
-
import fetchAdapter from "./standards-sdk.
|
|
2
|
+
import httpAdapter from "./standards-sdk.es62.js";
|
|
3
|
+
import xhrAdapter from "./standards-sdk.es63.js";
|
|
4
|
+
import fetchAdapter from "./standards-sdk.es64.js";
|
|
5
5
|
import AxiosError from "./standards-sdk.es45.js";
|
|
6
6
|
const knownAdapters = {
|
|
7
7
|
http: httpAdapter,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import Buffer from "./standards-sdk.es19.js";
|
|
2
2
|
import { Client, PrivateKey, AccountCreateTransaction, Hbar, CustomFixedFee, AccountId, KeyList, TopicCreateTransaction, PublicKey, TopicMessageSubmitTransaction, TopicId, Transaction } from "@hashgraph/sdk";
|
|
3
3
|
import { AccountCreationError, TopicCreationError, ConnectionConfirmationError, PayloadSizeError } from "./standards-sdk.es6.js";
|
|
4
|
-
import { InscriptionSDK } from "./standards-sdk.
|
|
4
|
+
import { InscriptionSDK } from "./standards-sdk.es24.js";
|
|
5
5
|
import { Logger } from "./standards-sdk.es14.js";
|
|
6
6
|
import { HCS10BaseClient, Hcs10MemoType } from "./standards-sdk.es8.js";
|
|
7
7
|
import { m as mimeTypesExports } from "./standards-sdk.es20.js";
|
|
@@ -381,7 +381,6 @@ class HCS10Client extends HCS10BaseClient {
|
|
|
381
381
|
connectionTopicId,
|
|
382
382
|
requestingAccountId,
|
|
383
383
|
connectionRequestId,
|
|
384
|
-
operatorId,
|
|
385
384
|
"Connection accepted. Looking forward to collaborating!"
|
|
386
385
|
);
|
|
387
386
|
return {
|
|
@@ -390,7 +389,8 @@ class HCS10Client extends HCS10BaseClient {
|
|
|
390
389
|
operatorId
|
|
391
390
|
};
|
|
392
391
|
}
|
|
393
|
-
async confirmConnection(inboundTopicId, connectionTopicId, connectedAccountId, connectionId,
|
|
392
|
+
async confirmConnection(inboundTopicId, connectionTopicId, connectedAccountId, connectionId, memo, submitKey) {
|
|
393
|
+
const operatorId = await this.getOperatorId();
|
|
394
394
|
this.logger.info(`Confirming connection with ID ${connectionId}`);
|
|
395
395
|
const payload = {
|
|
396
396
|
p: "hcs-10",
|
|
@@ -535,10 +535,16 @@ class HCS10Client extends HCS10BaseClient {
|
|
|
535
535
|
this.logger.info("Message submitted successfully");
|
|
536
536
|
return receipt;
|
|
537
537
|
}
|
|
538
|
-
async submitConnectionRequest(inboundTopicId,
|
|
538
|
+
async submitConnectionRequest(inboundTopicId, memo) {
|
|
539
|
+
const accountResponse = this.getAccountAndSigner();
|
|
540
|
+
if (!accountResponse.accountId) {
|
|
541
|
+
throw new Error("Operator account ID is not set");
|
|
542
|
+
}
|
|
543
|
+
const operatorId = await this.getOperatorId();
|
|
544
|
+
const accountId = accountResponse.accountId;
|
|
539
545
|
const submissionCheck = await this.canSubmitToTopic(
|
|
540
546
|
inboundTopicId,
|
|
541
|
-
|
|
547
|
+
accountId
|
|
542
548
|
);
|
|
543
549
|
if (!submissionCheck.canSubmit) {
|
|
544
550
|
throw new Error(`Cannot submit to topic: ${submissionCheck.reason}`);
|
|
@@ -547,7 +553,7 @@ class HCS10Client extends HCS10BaseClient {
|
|
|
547
553
|
p: "hcs-10",
|
|
548
554
|
op: "connection_request",
|
|
549
555
|
operator_id: operatorId,
|
|
550
|
-
memo
|
|
556
|
+
m: memo
|
|
551
557
|
};
|
|
552
558
|
const requiresFee = submissionCheck.requiresFee;
|
|
553
559
|
const response = await this.submitPayload(
|
|
@@ -559,9 +565,7 @@ class HCS10Client extends HCS10BaseClient {
|
|
|
559
565
|
this.logger.info(
|
|
560
566
|
`Submitted connection request to topic ID: ${inboundTopicId}`
|
|
561
567
|
);
|
|
562
|
-
const outboundTopic = await this.retrieveOutboundConnectTopic(
|
|
563
|
-
requestingAccountId
|
|
564
|
-
);
|
|
568
|
+
const outboundTopic = await this.retrieveOutboundConnectTopic(accountId);
|
|
565
569
|
const responseSequenceNumber = response.topicSequenceNumber?.toNumber();
|
|
566
570
|
if (!responseSequenceNumber) {
|
|
567
571
|
throw new Error("Failed to get response sequence number");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"standards-sdk.es5.js","sources":["../../src/hcs-10/sdk.ts"],"sourcesContent":["import {\n Client,\n AccountCreateTransaction,\n PrivateKey,\n Hbar,\n KeyList,\n TopicCreateTransaction,\n TopicMessageSubmitTransaction,\n TopicId,\n Transaction,\n TransactionResponse,\n TransactionReceipt,\n PublicKey,\n AccountId,\n CustomFixedFee,\n} from '@hashgraph/sdk';\nimport {\n PayloadSizeError,\n AccountCreationError,\n TopicCreationError,\n ConnectionConfirmationError,\n} from './errors';\nimport {\n InscriptionSDK,\n RetrievedInscriptionResult,\n} from '@kiloscribe/inscription-sdk';\nimport { Logger, LogLevel } from '../utils/logger';\nimport { HCS10BaseClient } from './base-client';\nimport * as mime from 'mime-types';\nimport {\n HCSClientConfig,\n AgentConfig,\n CreateAccountResponse,\n CreateAgentResponse,\n InscribePfpResponse,\n StoreHCS11ProfileResponse,\n AgentRegistrationResult,\n HandleConnectionRequestResponse,\n WaitForConnectionConfirmationResponse,\n GetAccountAndSignerResponse,\n InboundTopicType,\n TopicFeeConfig,\n FeeConfigBuilderInterface,\n AgentCreationState,\n RegistrationProgressCallback,\n AgentMetadata,\n} from './types';\nimport { HCS11Client } from '../hcs-11';\nimport { AgentBuilder } from './agent-builder';\nimport { accountIdsToExemptKeys } from '../utils/topic-fee-utils';\nimport { Hcs10MemoType } from './base-client';\n\nexport { InboundTopicType } from './types';\nexport { FeeConfigBuilder } from './fee-config-builder';\n\nexport class HCS10Client extends HCS10BaseClient {\n private client: Client;\n private operatorPrivateKey: PrivateKey;\n protected declare network: string;\n protected declare logger: Logger;\n protected guardedRegistryBaseUrl: string;\n private hcs11Client: HCS11Client;\n\n constructor(config: HCSClientConfig) {\n super({\n network: config.network,\n logLevel: config.logLevel,\n prettyPrint: config.prettyPrint,\n feeAmount: config.feeAmount,\n });\n this.client =\n config.network === 'mainnet' ? Client.forMainnet() : Client.forTestnet();\n this.operatorPrivateKey = PrivateKey.fromString(config.operatorPrivateKey);\n this.network = config.network;\n this.client.setOperator(\n config.operatorId,\n this.operatorPrivateKey.toString()\n );\n this.logger = Logger.getInstance({\n level: config.logLevel || 'info',\n module: 'HCS-SDK',\n });\n this.guardedRegistryBaseUrl =\n config.guardedRegistryBaseUrl || 'https://moonscape.tech';\n\n this.hcs11Client = new HCS11Client({\n network: config.network,\n auth: {\n operatorId: config.operatorId,\n privateKey: config.operatorPrivateKey,\n },\n logLevel: config.logLevel,\n });\n }\n\n public getClient() {\n return this.client;\n }\n\n /**\n * Creates a new Hedera account\n * @returns Object with account ID and private key\n */\n async createAccount(): Promise<CreateAccountResponse> {\n this.logger.info('Creating new account');\n const newKey = PrivateKey.generate();\n\n const accountTransaction = new AccountCreateTransaction()\n .setKey(newKey.publicKey)\n .setInitialBalance(new Hbar(10));\n\n this.logger.debug('Executing account creation transaction');\n const accountResponse = await accountTransaction.execute(this.client);\n const accountReceipt = await accountResponse.getReceipt(this.client);\n const newAccountId = accountReceipt.accountId;\n\n if (!newAccountId) {\n this.logger.error('Account creation failed: accountId is null');\n throw new AccountCreationError(\n 'Failed to create account: accountId is null'\n );\n }\n\n this.logger.info(\n `Account created successfully: ${newAccountId.toString()}`\n );\n return {\n accountId: newAccountId.toString(),\n privateKey: newKey.toString(),\n };\n }\n\n /**\n * Creates an inbound topic for an agent\n * @param accountId The account ID associated with the inbound topic\n * @param topicType Type of inbound topic (public, controlled, or fee-based)\n * @param ttl Optional Time-To-Live for the topic memo, defaults to 60\n * @param feeConfigBuilder Optional fee configuration builder for fee-based topics\n * @returns The topic ID of the created inbound topic\n */\n async createInboundTopic(\n accountId: string,\n topicType: InboundTopicType,\n ttl: number = 60,\n feeConfigBuilder?: FeeConfigBuilderInterface\n ): Promise<string> {\n const memo = this._generateHcs10Memo(Hcs10MemoType.INBOUND, {\n accountId,\n ttl,\n });\n\n let submitKey: boolean | PublicKey | KeyList | undefined;\n let feeConfig: TopicFeeConfig | undefined;\n\n switch (topicType) {\n case InboundTopicType.PUBLIC:\n submitKey = false;\n break;\n case InboundTopicType.CONTROLLED:\n submitKey = true;\n break;\n case InboundTopicType.FEE_BASED:\n submitKey = true;\n if (!feeConfigBuilder) {\n throw new Error(\n 'Fee configuration builder is required for fee-based topics'\n );\n }\n feeConfig = feeConfigBuilder.build();\n break;\n default:\n throw new Error(`Unsupported inbound topic type: ${topicType}`);\n }\n\n return this.createTopic(memo, true, submitKey, feeConfig);\n }\n\n /**\n * Creates a new agent with inbound and outbound topics\n * @param builder The agent builder object\n * @param ttl Optional Time-To-Live for the topic memos, defaults to 60\n * @returns Object with topic IDs\n */\n async createAgent(\n builder: AgentBuilder,\n ttl: number = 60\n ): Promise<CreateAgentResponse> {\n const config = builder.build();\n const outboundMemo = this._generateHcs10Memo(Hcs10MemoType.OUTBOUND, {\n ttl,\n });\n const outboundTopicId = await this.createTopic(outboundMemo, true, true);\n this.logger.info(`Created new outbound topic ID: ${outboundTopicId}`);\n\n const accountId = this.client.operatorAccountId?.toString();\n if (!accountId) {\n throw new Error('Failed to retrieve operator account ID');\n }\n\n const inboundTopicId = await this.createInboundTopic(\n accountId,\n config.inboundTopicType,\n ttl,\n config.inboundTopicType === InboundTopicType.FEE_BASED\n ? config.feeConfig\n : undefined\n );\n\n let pfpTopicId = config.existingPfpTopicId || '';\n\n if (!pfpTopicId && config.pfpBuffer && config.pfpBuffer.length > 0) {\n this.logger.info('Inscribing new profile picture');\n const pfpResult = await this.inscribePfp(\n config.pfpBuffer,\n config.pfpFileName\n );\n pfpTopicId = pfpResult.pfpTopicId;\n this.logger.info(\n `Profile picture inscribed with topic ID: ${pfpTopicId}`\n );\n } else if (config.existingPfpTopicId) {\n this.logger.info(\n `Using existing profile picture with topic ID: ${config.existingPfpTopicId}`\n );\n }\n\n const profileResult = await this.storeHCS11Profile(\n config.name,\n config.description,\n inboundTopicId,\n outboundTopicId,\n config.capabilities,\n config.metadata,\n config.pfpBuffer && config.pfpBuffer.length > 0\n ? config.pfpBuffer\n : undefined,\n config.pfpFileName,\n config.existingPfpTopicId\n );\n const profileTopicId = profileResult.profileTopicId;\n this.logger.info(`Profile stored with topic ID: ${profileTopicId}`);\n\n return {\n inboundTopicId,\n outboundTopicId,\n pfpTopicId,\n profileTopicId,\n };\n }\n\n /**\n * Inscribes a profile picture to Hedera\n * @param buffer Profile picture buffer\n * @param fileName Filename\n * @returns Response with topic ID and transaction ID\n */\n async inscribePfp(\n buffer: Buffer,\n fileName: string\n ): Promise<InscribePfpResponse> {\n try {\n this.logger.info('Inscribing profile picture using HCS-11 client');\n\n const imageResult = await this.hcs11Client.inscribeImage(\n buffer,\n fileName\n );\n\n if (!imageResult.success) {\n this.logger.error(\n `Failed to inscribe profile picture: ${imageResult.error}`\n );\n throw new Error(\n imageResult?.error || 'Failed to inscribe profile picture'\n );\n }\n\n this.logger.info(\n `Successfully inscribed profile picture with topic ID: ${imageResult.imageTopicId}`\n );\n return {\n pfpTopicId: imageResult.imageTopicId,\n transactionId: imageResult.transactionId,\n success: true,\n };\n } catch (error: any) {\n this.logger.error(`Error inscribing profile picture: ${error.message}`);\n return {\n pfpTopicId: '',\n transactionId: '',\n success: false,\n error: error.message,\n };\n }\n }\n\n /**\n * Stores an HCS-11 profile for an agent\n * @param agentName Agent name\n * @param agentDescription Agent description\n * @param inboundTopicId Inbound topic ID\n * @param outboundTopicId Outbound topic ID\n * @param capabilities Agent capability tags\n * @param metadata Additional metadata\n * @param pfpBuffer Optional profile picture buffer\n * @param pfpFileName Optional profile picture filename\n * @returns Response with topic IDs and transaction ID\n */\n async storeHCS11Profile(\n agentName: string,\n agentDescription: string,\n inboundTopicId: string,\n outboundTopicId: string,\n capabilities: number[] = [],\n metadata: AgentMetadata,\n pfpBuffer?: Buffer,\n pfpFileName?: string,\n existingPfpTopicId?: string\n ): Promise<StoreHCS11ProfileResponse> {\n try {\n let pfpTopicId = existingPfpTopicId || '';\n\n if (!pfpTopicId && pfpBuffer && pfpFileName) {\n this.logger.info('Inscribing profile picture for HCS-11 profile');\n const pfpResult = await this.inscribePfp(pfpBuffer, pfpFileName);\n if (!pfpResult.success) {\n this.logger.error(\n 'Failed to inscribe profile picture, continuing without PFP'\n );\n } else {\n pfpTopicId = pfpResult.pfpTopicId;\n }\n } else if (existingPfpTopicId) {\n this.logger.info(\n `Using existing profile picture with topic ID: ${existingPfpTopicId} for HCS-11 profile`\n );\n }\n\n const agentType = this.hcs11Client.getAgentTypeFromMetadata({\n type: metadata.type || 'autonomous',\n } as AgentMetadata);\n\n const formattedSocials = metadata.socials\n ? Object.entries(metadata.socials)\n .filter(([_, handle]) => handle)\n .map(([platform, handle]) => ({\n platform: platform === 'x' ? 'twitter' : platform,\n handle,\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: agentDescription,\n profileImage: pfpTopicId ? `hcs://1/${pfpTopicId}` : undefined,\n socials: formattedSocials,\n properties: metadata.properties,\n inboundTopicId,\n outboundTopicId,\n creator: metadata.creator,\n }\n );\n\n const profileResult = await this.hcs11Client.createAndInscribeProfile(\n profile,\n true\n );\n\n if (!profileResult.success) {\n this.logger.error(`Failed to inscribe profile: ${profileResult.error}`);\n throw new Error(profileResult.error || 'Failed to inscribe profile');\n }\n\n this.logger.info(\n `Profile inscribed with topic ID: ${profileResult.profileTopicId}, transaction ID: ${profileResult.transactionId}`\n );\n\n return {\n profileTopicId: profileResult.profileTopicId,\n pfpTopicId,\n transactionId: profileResult.transactionId,\n success: true,\n };\n } catch (error: any) {\n this.logger.error(`Error storing HCS-11 profile: ${error.message}`);\n return {\n profileTopicId: '',\n pfpTopicId: '',\n transactionId: '',\n success: false,\n error: error.message,\n };\n }\n }\n\n private async setupFees(\n transaction: TopicCreateTransaction,\n feeConfig: TopicFeeConfig,\n additionalExemptAccounts: string[] = []\n ): Promise<void> {\n if (!this.client.operatorPublicKey) {\n return;\n }\n\n this.logger.info('Setting up topic with custom fees');\n\n const customFee = new CustomFixedFee()\n .setAmount(Number(feeConfig.feeAmount.amount))\n .setFeeCollectorAccountId(\n AccountId.fromString(feeConfig.feeCollectorAccountId)\n );\n\n let exemptAccountIds = [\n ...(feeConfig.exemptAccounts || []),\n ...additionalExemptAccounts,\n ];\n\n console.log('exemptAccountIds', exemptAccountIds);\n\n if (exemptAccountIds.length > 0) {\n const uniqueExemptAccountIds = Array.from(new Set(exemptAccountIds));\n const filteredExemptAccounts = uniqueExemptAccountIds.filter(\n (account) => account !== this.client.operatorAccountId?.toString()\n );\n\n let exemptKeys: PublicKey[] = [];\n if (filteredExemptAccounts.length > 0) {\n try {\n exemptKeys = await accountIdsToExemptKeys(\n filteredExemptAccounts,\n this.network,\n this.logger\n );\n } catch (error) {\n this.logger.warn(\n `Error getting exempt keys: ${error}, continuing without exempt keys`\n );\n }\n }\n\n if (exemptKeys.length > 0) {\n transaction.setFeeExemptKeys(exemptKeys);\n }\n }\n\n transaction\n .setFeeScheduleKey(this.client.operatorPublicKey)\n .setCustomFees([customFee]);\n }\n\n /**\n * Handles a connection request from another account\n * @param inboundTopicId Inbound topic ID\n * @param requestingAccountId Requesting account ID\n * @param connectionRequestId Connection request ID\n * @param connectionFeeConfig Optional fee configuration for the connection topic\n * @param ttl Optional ttl parameter with default\n * @returns Response with connection details\n */\n async handleConnectionRequest(\n inboundTopicId: string,\n requestingAccountId: string,\n connectionRequestId: number,\n connectionFeeConfig?: FeeConfigBuilderInterface,\n ttl: number = 60\n ): Promise<HandleConnectionRequestResponse> {\n const memo = this._generateHcs10Memo(Hcs10MemoType.CONNECTION, {\n ttl,\n inboundTopicId,\n connectionId: connectionRequestId,\n });\n this.logger.info(\n `Handling connection request ${connectionRequestId} from ${requestingAccountId}`\n );\n\n const accountId = this.getClient().operatorAccountId?.toString();\n if (!accountId) {\n throw new Error('Failed to retrieve operator account ID');\n }\n\n let requesterKey = await this.mirrorNode.getPublicKey(requestingAccountId);\n const accountKey = await this.mirrorNode.getPublicKey(accountId);\n\n if (!accountKey) {\n throw new Error('Failed to retrieve public key');\n }\n\n const thresholdKey = new KeyList([accountKey, requesterKey], 1);\n\n let connectionTopicId: string;\n\n try {\n if (connectionFeeConfig) {\n const feeConfig = connectionFeeConfig.build();\n const modifiedFeeConfig = {\n ...feeConfig,\n exemptAccounts: [...(feeConfig.exemptAccounts || [])],\n };\n\n connectionTopicId = await this.createTopic(\n memo,\n thresholdKey,\n thresholdKey,\n modifiedFeeConfig\n );\n } else {\n connectionTopicId = await this.createTopic(\n memo,\n thresholdKey,\n thresholdKey\n );\n }\n\n this.logger.info(`Created new connection topic ID: ${connectionTopicId}`);\n } catch (error) {\n this.logger.error(`Failed to create connection topic: ${error}`);\n throw new TopicCreationError(\n `Failed to create connection topic: ${error}`\n );\n }\n\n const operatorId = `${inboundTopicId}@${accountId}`;\n\n const confirmedConnectionSequenceNumber = await this.confirmConnection(\n inboundTopicId,\n connectionTopicId,\n requestingAccountId,\n connectionRequestId,\n operatorId,\n 'Connection accepted. Looking forward to collaborating!'\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 submitKey?: PrivateKey\n ): Promise<number> {\n this.logger.info(`Confirming connection with ID ${connectionId}`);\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 submissionCheck = await this.canSubmitToTopic(\n inboundTopicId,\n this.client.operatorAccountId?.toString() || ''\n );\n\n const result = await this.submitPayload(\n inboundTopicId,\n payload,\n submitKey,\n submissionCheck.requiresFee\n );\n\n const sequenceNumber = result.topicSequenceNumber?.toNumber();\n\n if (!sequenceNumber) {\n throw new ConnectionConfirmationError(\n 'Failed to confirm connection: sequence number is null'\n );\n }\n\n return sequenceNumber;\n }\n\n async sendMessage(\n connectionTopicId: string,\n data: string,\n memo?: string,\n submitKey?: PrivateKey\n ): Promise<TransactionReceipt> {\n const submissionCheck = await this.canSubmitToTopic(\n connectionTopicId,\n this.client.operatorAccountId?.toString() || ''\n );\n\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 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\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 this.logger.info('Submitting message to connection topic', payload);\n return await this.submitPayload(\n connectionTopicId,\n payload,\n submitKey,\n submissionCheck.requiresFee\n );\n }\n\n async createTopic(\n memo: string,\n adminKey?: boolean | PublicKey | KeyList,\n submitKey?: boolean | PublicKey | KeyList,\n feeConfig?: TopicFeeConfig\n ): Promise<string> {\n this.logger.info('Creating topic');\n const transaction = new TopicCreateTransaction().setTopicMemo(memo);\n\n if (adminKey) {\n if (\n typeof adminKey === 'boolean' &&\n adminKey &&\n this.client.operatorPublicKey\n ) {\n transaction.setAdminKey(this.client.operatorPublicKey);\n transaction.setAutoRenewAccountId(this.client.operatorAccountId!);\n } else if (adminKey instanceof PublicKey || adminKey instanceof KeyList) {\n transaction.setAdminKey(adminKey);\n if (this.client.operatorAccountId) {\n transaction.setAutoRenewAccountId(this.client.operatorAccountId);\n }\n }\n }\n\n if (submitKey) {\n if (\n typeof submitKey === 'boolean' &&\n submitKey &&\n this.client.operatorPublicKey\n ) {\n transaction.setSubmitKey(this.client.operatorPublicKey);\n } else if (\n submitKey instanceof PublicKey ||\n submitKey instanceof KeyList\n ) {\n transaction.setSubmitKey(submitKey);\n }\n }\n\n if (feeConfig) {\n await this.setupFees(transaction, feeConfig);\n }\n\n this.logger.debug('Executing topic creation transaction');\n const txResponse = await transaction.execute(this.client);\n const receipt = await txResponse.getReceipt(this.client);\n\n if (!receipt.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 topicId = receipt.topicId.toString();\n return topicId;\n }\n\n public async submitPayload(\n topicId: string,\n payload: object | string,\n submitKey?: PrivateKey,\n requiresFee: boolean = false\n ): Promise<TransactionReceipt> {\n const message =\n typeof payload === 'string' ? payload : JSON.stringify(payload);\n\n const payloadSizeInBytes = Buffer.byteLength(message, 'utf8');\n if (payloadSizeInBytes > 1000) {\n throw new PayloadSizeError(\n 'Payload size exceeds 1000 bytes limit',\n payloadSizeInBytes\n );\n }\n\n const transaction = new TopicMessageSubmitTransaction()\n .setTopicId(TopicId.fromString(topicId))\n .setMessage(message);\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 transaction.setTransactionMemo('HIP-991 Fee Payment');\n }\n\n let transactionResponse: TransactionResponse;\n if (submitKey) {\n const frozenTransaction = transaction.freezeWith(this.client);\n const signedTransaction = await frozenTransaction.sign(submitKey);\n transactionResponse = await signedTransaction.execute(this.client);\n } else {\n transactionResponse = await transaction.execute(this.client);\n }\n\n const receipt = await transactionResponse.getReceipt(this.client);\n if (!receipt) {\n this.logger.error('Failed to submit message: receipt is null');\n throw new Error('Failed to submit message: receipt is null');\n }\n this.logger.info('Message submitted successfully');\n return receipt;\n }\n\n async submitConnectionRequest(\n inboundTopicId: string,\n requestingAccountId: string,\n operatorId: string,\n memo: string\n ): Promise<TransactionReceipt> {\n const submissionCheck = await this.canSubmitToTopic(\n inboundTopicId,\n requestingAccountId\n );\n\n if (!submissionCheck.canSubmit) {\n throw new Error(`Cannot submit to topic: ${submissionCheck.reason}`);\n }\n\n const connectionRequestMessage = {\n p: 'hcs-10',\n op: 'connection_request',\n operator_id: operatorId,\n memo: memo,\n };\n\n const requiresFee = submissionCheck.requiresFee;\n const response = await this.submitPayload(\n inboundTopicId,\n connectionRequestMessage,\n undefined,\n requiresFee\n );\n\n this.logger.info(\n `Submitted connection request to topic ID: ${inboundTopicId}`\n );\n\n const outboundTopic = await this.retrieveOutboundConnectTopic(\n requestingAccountId\n );\n\n const responseSequenceNumber = response.topicSequenceNumber?.toNumber();\n\n if (!responseSequenceNumber) {\n throw new Error('Failed to get response sequence number');\n }\n\n await this.submitPayload(outboundTopic.outboundTopic, {\n ...connectionRequestMessage,\n outbound_topic_id: outboundTopic.outboundTopic,\n connection_request_id: responseSequenceNumber,\n });\n\n return response;\n }\n\n async inscribeFile(\n buffer: Buffer,\n fileName: string\n ): Promise<RetrievedInscriptionResult> {\n this.logger.info('Inscribing file');\n if (!this.client.operatorAccountId) {\n this.logger.error('Operator account ID is not set');\n throw new Error('Operator account ID is not set');\n }\n\n if (!this.operatorPrivateKey) {\n this.logger.error('Operator private key is not set');\n throw new Error('Operator private key is not set');\n }\n\n const mimeType = mime.lookup(fileName) || 'application/octet-stream';\n\n const sdk = await InscriptionSDK.createWithAuth({\n type: 'server',\n accountId: this.client.operatorAccountId.toString(),\n privateKey: this.operatorPrivateKey.toString(),\n network: this.network as 'testnet' | 'mainnet',\n });\n\n const result = await sdk.inscribeAndExecute(\n {\n file: {\n type: 'base64',\n base64: buffer.toString('base64'),\n fileName,\n mimeType,\n },\n holderId: this.client.operatorAccountId.toString(),\n mode: 'file',\n network: this.network as 'testnet' | 'mainnet',\n },\n {\n accountId: this.client.operatorAccountId.toString(),\n privateKey: this.operatorPrivateKey.toString(),\n network: this.network as 'testnet' | 'mainnet',\n }\n );\n\n if (!result.transactionId || !result.jobId) {\n this.logger.error('Failed to inscribe, no transaction ID or job ID.');\n throw new Error('Failed to inscribe, no transaction ID or job ID.');\n }\n\n if (result.transactionId && result.jobId) {\n this.logger.info(\n `Transaction ID: ${result.transactionId}, Job ID: ${result.jobId}`\n );\n }\n\n const status = await sdk.waitForInscription(result.jobId, 30, 4000, true);\n return status;\n }\n\n /**\n * Waits for confirmation of a connection request\n * @param inboundTopicId Inbound topic ID\n * @param connectionRequestId Connection request ID\n * @param maxAttempts Maximum number of attempts\n * @param delayMs Delay between attempts in milliseconds\n * @returns Connection confirmation details\n */\n async waitForConnectionConfirmation(\n inboundTopicId: string,\n connectionRequestId: number,\n maxAttempts = 60,\n delayMs = 2000\n ): Promise<WaitForConnectionConfirmationResponse> {\n this.logger.info(\n `Waiting for connection confirmation on inbound topic ${inboundTopicId} for request ID ${connectionRequestId}`\n );\n\n for (let attempt = 0; attempt < maxAttempts; attempt++) {\n this.logger.info(\n `Attempt ${attempt + 1}/${maxAttempts} to find connection confirmation`\n );\n const messages = await this.mirrorNode.getTopicMessages(inboundTopicId);\n\n const connectionCreatedMessages = messages.filter(\n (m) => m.op === 'connection_created'\n );\n\n this.logger.info(\n `Found ${connectionCreatedMessages.length} connection_created messages`\n );\n\n if (connectionCreatedMessages.length > 0) {\n for (const message of connectionCreatedMessages) {\n if (Number(message.connection_id) === Number(connectionRequestId)) {\n this.logger.info('Connection confirmation found');\n return {\n connectionTopicId: message.connection_topic_id,\n sequence_number: Number(message.sequence_number),\n confirmedBy: message.operator_id,\n memo: message.m,\n };\n }\n }\n }\n\n if (attempt < maxAttempts - 1) {\n this.logger.info(\n `No matching confirmation found, waiting ${delayMs}ms before retrying...`\n );\n await new Promise((resolve) => setTimeout(resolve, delayMs));\n }\n }\n\n throw new Error(\n `Connection confirmation not found after ${maxAttempts} attempts for request ID ${connectionRequestId}`\n );\n }\n\n getAccountAndSigner(): GetAccountAndSignerResponse {\n return {\n accountId: this.client.operatorAccountId!.toString()!,\n signer: this.operatorPrivateKey,\n };\n }\n\n /**\n * Creates and registers an agent with a Guarded registry.\n *\n * This function performs the following steps:\n * 1. Creates a new account if no existing account is provided.\n * 2. Initializes an HCS10 client with the new account.\n * 3. Creates an agent on the client.\n * 4. Registers the agent with the Hashgraph Online Guarded Registry.\n *\n * @param builder The agent builder object\n * @param options Optional configuration including progress callback and state management\n * @returns Agent registration result\n */\n async createAndRegisterAgent(\n builder: AgentBuilder,\n options?: {\n baseUrl?: string;\n progressCallback?: RegistrationProgressCallback;\n existingState?: AgentCreationState;\n }\n ): Promise<AgentRegistrationResult> {\n try {\n const config = builder.build();\n const progressCallback = options?.progressCallback;\n const baseUrl = options?.baseUrl || this.guardedRegistryBaseUrl;\n let state = options?.existingState || undefined;\n\n if (progressCallback) {\n progressCallback({\n stage: 'preparing',\n message: 'Preparing agent registration',\n progressPercent: 10,\n details: { state },\n });\n }\n\n const account = config.existingAccount || (await this.createAccount());\n\n if (progressCallback) {\n progressCallback({\n stage: 'preparing',\n message: 'Created account or using existing account',\n progressPercent: 20,\n details: { state, account },\n });\n }\n\n const agentClient = new HCS10Client({\n network: config.network,\n operatorId: account.accountId,\n operatorPrivateKey: account.privateKey,\n operatorPublicKey: PrivateKey.fromString(\n account.privateKey\n ).publicKey.toString(),\n logLevel: 'info' as LogLevel,\n guardedRegistryBaseUrl: baseUrl,\n });\n\n if (progressCallback) {\n progressCallback({\n stage: 'preparing',\n message: 'Initialized agent client',\n progressPercent: 30,\n details: { state },\n });\n }\n\n const { outboundTopicId, inboundTopicId, pfpTopicId, profileTopicId } =\n await agentClient.createAgent(builder);\n\n if (progressCallback) {\n progressCallback({\n stage: 'submitting',\n message: 'Created agent with topics and profile',\n progressPercent: 60,\n details: {\n state,\n outboundTopicId,\n inboundTopicId,\n pfpTopicId,\n profileTopicId,\n },\n });\n }\n\n const operatorId = `${inboundTopicId}@${account.accountId}`;\n\n const registrationResult =\n await agentClient.registerAgentWithGuardedRegistry(\n account.accountId,\n config.network,\n {\n progressCallback: (data) => {\n const adjustedPercent = 60 + (data.progressPercent || 0) * 0.4;\n if (progressCallback) {\n progressCallback({\n stage: data.stage,\n message: data.message,\n progressPercent: adjustedPercent,\n details: {\n ...data.details,\n outboundTopicId,\n inboundTopicId,\n pfpTopicId,\n profileTopicId,\n operatorId,\n state: data.details?.state || state,\n },\n });\n }\n },\n existingState: state,\n }\n );\n\n if (!registrationResult.success) {\n return registrationResult;\n }\n\n if (progressCallback) {\n progressCallback({\n stage: 'completed',\n message: 'Agent creation and registration complete',\n progressPercent: 100,\n details: {\n outboundTopicId,\n inboundTopicId,\n pfpTopicId,\n profileTopicId,\n operatorId,\n state: registrationResult.state,\n },\n });\n }\n\n return {\n ...registrationResult,\n metadata: {\n accountId: account.accountId,\n privateKey: account.privateKey,\n operatorId,\n inboundTopicId,\n outboundTopicId,\n profileTopicId,\n pfpTopicId,\n },\n };\n } catch (error: any) {\n this.logger.error(\n `Failed to create and register agent: ${error.message}`\n );\n return {\n error: error.message,\n success: false,\n };\n }\n }\n\n /**\n * Registers an agent with the guarded registry\n * @param accountId Account ID to register\n * @param inboundTopicId Inbound topic ID for the agent\n * @param network Network type ('mainnet' or 'testnet')\n * @param options Optional configuration including progress callback and confirmation settings\n * @returns Registration result\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 maxAttempts = options?.maxAttempts ?? 60;\n const delayMs = options?.delayMs ?? 2000;\n const progressCallback = options?.progressCallback;\n let state =\n options?.existingState ||\n ({\n currentStage: 'registration',\n completedPercentage: 0,\n createdResources: [],\n } as AgentCreationState);\n\n if (progressCallback) {\n progressCallback({\n stage: 'preparing',\n message: 'Preparing agent registration',\n progressPercent: 10,\n details: {\n state,\n },\n });\n }\n\n const registrationResult = await this.executeRegistration(\n accountId,\n network,\n this.guardedRegistryBaseUrl,\n this.logger\n );\n\n if (!registrationResult.success) {\n return {\n ...registrationResult,\n state,\n };\n }\n\n if (progressCallback) {\n progressCallback({\n stage: 'submitting',\n message: 'Submitting registration to registry',\n progressPercent: 30,\n details: {\n transactionId: registrationResult.transactionId,\n state,\n },\n });\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 await transaction.execute(this.client);\n this.logger.info(`Successfully processed registration transaction`);\n }\n\n if (progressCallback) {\n progressCallback({\n stage: 'confirming',\n message: 'Confirming registration transaction',\n progressPercent: 60,\n details: {\n accountId,\n transactionId: registrationResult.transactionId,\n state,\n },\n });\n }\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 state.currentStage = 'complete';\n state.completedPercentage = 100;\n if (!state.createdResources) {\n state.createdResources = [];\n }\n if (registrationResult.transactionId) {\n state.createdResources.push(\n `registration:${registrationResult.transactionId}`\n );\n }\n\n if (progressCallback) {\n progressCallback({\n stage: 'completed',\n message: 'Agent registration complete',\n progressPercent: 100,\n details: {\n confirmed,\n transactionId: registrationResult.transactionId,\n state,\n },\n });\n }\n\n return {\n ...registrationResult,\n confirmed,\n state,\n };\n } catch (error: any) {\n this.logger.error(`Failed to register agent: ${error.message}`);\n return {\n error: error.message,\n success: false,\n };\n }\n }\n\n /**\n * Registers an agent with the guarded registry. Should be called by a registry.\n * @param registryTopicId - The topic ID of the guarded registry.\n * @param accountId - The account ID of the agent\n * @param inboundTopicId - The topic ID of the inbound topic\n * @param memo - The memo of the agent\n * @param submitKey - The submit key of the agent\n */\n async registerAgent(\n registryTopicId: string,\n accountId: string,\n inboundTopicId: string,\n memo: string,\n submitKey?: PrivateKey\n ): Promise<void> {\n this.logger.info('Registering agent');\n const payload = {\n p: 'hcs-10',\n op: 'register',\n account_id: accountId,\n inbound_topic_id: inboundTopicId,\n m: memo,\n };\n\n await this.submitPayload(registryTopicId, payload, submitKey);\n }\n\n async getInboundTopicType(topicId: string): Promise<InboundTopicType> {\n try {\n const topicInfo = await this.mirrorNode.getTopicInfo(topicId);\n\n if (!topicInfo) {\n throw new Error('Topic does not exist');\n }\n\n const hasSubmitKey = topicInfo.submit_key && topicInfo.submit_key.key;\n\n if (!hasSubmitKey) {\n return InboundTopicType.PUBLIC;\n }\n\n const hasFeeScheduleKey =\n topicInfo.fee_schedule_key && topicInfo.fee_schedule_key.key;\n\n if (hasFeeScheduleKey && topicInfo.custom_fees) {\n const customFees = topicInfo.custom_fees;\n\n if (\n customFees &&\n customFees.fixed_fees &&\n customFees.fixed_fees.length > 0\n ) {\n this.logger.info(\n `Topic ${topicId} is fee-based with ${customFees.fixed_fees.length} custom fees`\n );\n return InboundTopicType.FEE_BASED;\n }\n }\n\n return InboundTopicType.CONTROLLED;\n } catch (error: any) {\n this.logger.error(`Error determining topic type: ${error.message}`);\n throw new Error(`Failed to determine topic type: ${error.message}`);\n }\n }\n\n getNetwork(): string {\n return this.network;\n }\n\n getLogger(): Logger {\n return this.logger;\n }\n}\n"],"names":["mime.lookup"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"standards-sdk.es5.js","sources":["../../src/hcs-10/sdk.ts"],"sourcesContent":["import {\n Client,\n AccountCreateTransaction,\n PrivateKey,\n Hbar,\n KeyList,\n TopicCreateTransaction,\n TopicMessageSubmitTransaction,\n TopicId,\n Transaction,\n TransactionResponse,\n TransactionReceipt,\n PublicKey,\n AccountId,\n CustomFixedFee,\n} from '@hashgraph/sdk';\nimport {\n PayloadSizeError,\n AccountCreationError,\n TopicCreationError,\n ConnectionConfirmationError,\n} from './errors';\nimport {\n InscriptionSDK,\n RetrievedInscriptionResult,\n} from '@kiloscribe/inscription-sdk';\nimport { Logger, LogLevel } from '../utils/logger';\nimport { HCS10BaseClient } from './base-client';\nimport * as mime from 'mime-types';\nimport {\n HCSClientConfig,\n AgentConfig,\n CreateAccountResponse,\n CreateAgentResponse,\n InscribePfpResponse,\n StoreHCS11ProfileResponse,\n AgentRegistrationResult,\n HandleConnectionRequestResponse,\n WaitForConnectionConfirmationResponse,\n GetAccountAndSignerResponse,\n InboundTopicType,\n TopicFeeConfig,\n FeeConfigBuilderInterface,\n AgentCreationState,\n RegistrationProgressCallback,\n AgentMetadata,\n} from './types';\nimport { HCS11Client } from '../hcs-11';\nimport { AgentBuilder } from './agent-builder';\nimport { accountIdsToExemptKeys } from '../utils/topic-fee-utils';\nimport { Hcs10MemoType } from './base-client';\n\nexport { InboundTopicType } from './types';\nexport { FeeConfigBuilder } from './fee-config-builder';\n\nexport class HCS10Client extends HCS10BaseClient {\n private client: Client;\n private operatorPrivateKey: PrivateKey;\n protected declare network: string;\n protected declare logger: Logger;\n protected guardedRegistryBaseUrl: string;\n private hcs11Client: HCS11Client;\n\n constructor(config: HCSClientConfig) {\n super({\n network: config.network,\n logLevel: config.logLevel,\n prettyPrint: config.prettyPrint,\n feeAmount: config.feeAmount,\n });\n this.client =\n config.network === 'mainnet' ? Client.forMainnet() : Client.forTestnet();\n this.operatorPrivateKey = PrivateKey.fromString(config.operatorPrivateKey);\n this.network = config.network;\n this.client.setOperator(\n config.operatorId,\n this.operatorPrivateKey.toString()\n );\n this.logger = Logger.getInstance({\n level: config.logLevel || 'info',\n module: 'HCS-SDK',\n });\n this.guardedRegistryBaseUrl =\n config.guardedRegistryBaseUrl || 'https://moonscape.tech';\n\n this.hcs11Client = new HCS11Client({\n network: config.network,\n auth: {\n operatorId: config.operatorId,\n privateKey: config.operatorPrivateKey,\n },\n logLevel: config.logLevel,\n });\n }\n\n public getClient() {\n return this.client;\n }\n\n /**\n * Creates a new Hedera account\n * @returns Object with account ID and private key\n */\n async createAccount(): Promise<CreateAccountResponse> {\n this.logger.info('Creating new account');\n const newKey = PrivateKey.generate();\n\n const accountTransaction = new AccountCreateTransaction()\n .setKey(newKey.publicKey)\n .setInitialBalance(new Hbar(10));\n\n this.logger.debug('Executing account creation transaction');\n const accountResponse = await accountTransaction.execute(this.client);\n const accountReceipt = await accountResponse.getReceipt(this.client);\n const newAccountId = accountReceipt.accountId;\n\n if (!newAccountId) {\n this.logger.error('Account creation failed: accountId is null');\n throw new AccountCreationError(\n 'Failed to create account: accountId is null'\n );\n }\n\n this.logger.info(\n `Account created successfully: ${newAccountId.toString()}`\n );\n return {\n accountId: newAccountId.toString(),\n privateKey: newKey.toString(),\n };\n }\n\n /**\n * Creates an inbound topic for an agent\n * @param accountId The account ID associated with the inbound topic\n * @param topicType Type of inbound topic (public, controlled, or fee-based)\n * @param ttl Optional Time-To-Live for the topic memo, defaults to 60\n * @param feeConfigBuilder Optional fee configuration builder for fee-based topics\n * @returns The topic ID of the created inbound topic\n */\n async createInboundTopic(\n accountId: string,\n topicType: InboundTopicType,\n ttl: number = 60,\n feeConfigBuilder?: FeeConfigBuilderInterface\n ): Promise<string> {\n const memo = this._generateHcs10Memo(Hcs10MemoType.INBOUND, {\n accountId,\n ttl,\n });\n\n let submitKey: boolean | PublicKey | KeyList | undefined;\n let feeConfig: TopicFeeConfig | undefined;\n\n switch (topicType) {\n case InboundTopicType.PUBLIC:\n submitKey = false;\n break;\n case InboundTopicType.CONTROLLED:\n submitKey = true;\n break;\n case InboundTopicType.FEE_BASED:\n submitKey = true;\n if (!feeConfigBuilder) {\n throw new Error(\n 'Fee configuration builder is required for fee-based topics'\n );\n }\n feeConfig = feeConfigBuilder.build();\n break;\n default:\n throw new Error(`Unsupported inbound topic type: ${topicType}`);\n }\n\n return this.createTopic(memo, true, submitKey, feeConfig);\n }\n\n /**\n * Creates a new agent with inbound and outbound topics\n * @param builder The agent builder object\n * @param ttl Optional Time-To-Live for the topic memos, defaults to 60\n * @returns Object with topic IDs\n */\n async createAgent(\n builder: AgentBuilder,\n ttl: number = 60\n ): Promise<CreateAgentResponse> {\n const config = builder.build();\n const outboundMemo = this._generateHcs10Memo(Hcs10MemoType.OUTBOUND, {\n ttl,\n });\n const outboundTopicId = await this.createTopic(outboundMemo, true, true);\n this.logger.info(`Created new outbound topic ID: ${outboundTopicId}`);\n\n const accountId = this.client.operatorAccountId?.toString();\n if (!accountId) {\n throw new Error('Failed to retrieve operator account ID');\n }\n\n const inboundTopicId = await this.createInboundTopic(\n accountId,\n config.inboundTopicType,\n ttl,\n config.inboundTopicType === InboundTopicType.FEE_BASED\n ? config.feeConfig\n : undefined\n );\n\n let pfpTopicId = config.existingPfpTopicId || '';\n\n if (!pfpTopicId && config.pfpBuffer && config.pfpBuffer.length > 0) {\n this.logger.info('Inscribing new profile picture');\n const pfpResult = await this.inscribePfp(\n config.pfpBuffer,\n config.pfpFileName\n );\n pfpTopicId = pfpResult.pfpTopicId;\n this.logger.info(\n `Profile picture inscribed with topic ID: ${pfpTopicId}`\n );\n } else if (config.existingPfpTopicId) {\n this.logger.info(\n `Using existing profile picture with topic ID: ${config.existingPfpTopicId}`\n );\n }\n\n const profileResult = await this.storeHCS11Profile(\n config.name,\n config.description,\n inboundTopicId,\n outboundTopicId,\n config.capabilities,\n config.metadata,\n config.pfpBuffer && config.pfpBuffer.length > 0\n ? config.pfpBuffer\n : undefined,\n config.pfpFileName,\n config.existingPfpTopicId\n );\n const profileTopicId = profileResult.profileTopicId;\n this.logger.info(`Profile stored with topic ID: ${profileTopicId}`);\n\n return {\n inboundTopicId,\n outboundTopicId,\n pfpTopicId,\n profileTopicId,\n };\n }\n\n /**\n * Inscribes a profile picture to Hedera\n * @param buffer Profile picture buffer\n * @param fileName Filename\n * @returns Response with topic ID and transaction ID\n */\n async inscribePfp(\n buffer: Buffer,\n fileName: string\n ): Promise<InscribePfpResponse> {\n try {\n this.logger.info('Inscribing profile picture using HCS-11 client');\n\n const imageResult = await this.hcs11Client.inscribeImage(\n buffer,\n fileName\n );\n\n if (!imageResult.success) {\n this.logger.error(\n `Failed to inscribe profile picture: ${imageResult.error}`\n );\n throw new Error(\n imageResult?.error || 'Failed to inscribe profile picture'\n );\n }\n\n this.logger.info(\n `Successfully inscribed profile picture with topic ID: ${imageResult.imageTopicId}`\n );\n return {\n pfpTopicId: imageResult.imageTopicId,\n transactionId: imageResult.transactionId,\n success: true,\n };\n } catch (error: any) {\n this.logger.error(`Error inscribing profile picture: ${error.message}`);\n return {\n pfpTopicId: '',\n transactionId: '',\n success: false,\n error: error.message,\n };\n }\n }\n\n /**\n * Stores an HCS-11 profile for an agent\n * @param agentName Agent name\n * @param agentDescription Agent description\n * @param inboundTopicId Inbound topic ID\n * @param outboundTopicId Outbound topic ID\n * @param capabilities Agent capability tags\n * @param metadata Additional metadata\n * @param pfpBuffer Optional profile picture buffer\n * @param pfpFileName Optional profile picture filename\n * @returns Response with topic IDs and transaction ID\n */\n async storeHCS11Profile(\n agentName: string,\n agentDescription: string,\n inboundTopicId: string,\n outboundTopicId: string,\n capabilities: number[] = [],\n metadata: AgentMetadata,\n pfpBuffer?: Buffer,\n pfpFileName?: string,\n existingPfpTopicId?: string\n ): Promise<StoreHCS11ProfileResponse> {\n try {\n let pfpTopicId = existingPfpTopicId || '';\n\n if (!pfpTopicId && pfpBuffer && pfpFileName) {\n this.logger.info('Inscribing profile picture for HCS-11 profile');\n const pfpResult = await this.inscribePfp(pfpBuffer, pfpFileName);\n if (!pfpResult.success) {\n this.logger.error(\n 'Failed to inscribe profile picture, continuing without PFP'\n );\n } else {\n pfpTopicId = pfpResult.pfpTopicId;\n }\n } else if (existingPfpTopicId) {\n this.logger.info(\n `Using existing profile picture with topic ID: ${existingPfpTopicId} for HCS-11 profile`\n );\n }\n\n const agentType = this.hcs11Client.getAgentTypeFromMetadata({\n type: metadata.type || 'autonomous',\n } as AgentMetadata);\n\n const formattedSocials = metadata.socials\n ? Object.entries(metadata.socials)\n .filter(([_, handle]) => handle)\n .map(([platform, handle]) => ({\n platform: platform === 'x' ? 'twitter' : platform,\n handle,\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: agentDescription,\n profileImage: pfpTopicId ? `hcs://1/${pfpTopicId}` : undefined,\n socials: formattedSocials,\n properties: metadata.properties,\n inboundTopicId,\n outboundTopicId,\n creator: metadata.creator,\n }\n );\n\n const profileResult = await this.hcs11Client.createAndInscribeProfile(\n profile,\n true\n );\n\n if (!profileResult.success) {\n this.logger.error(`Failed to inscribe profile: ${profileResult.error}`);\n throw new Error(profileResult.error || 'Failed to inscribe profile');\n }\n\n this.logger.info(\n `Profile inscribed with topic ID: ${profileResult.profileTopicId}, transaction ID: ${profileResult.transactionId}`\n );\n\n return {\n profileTopicId: profileResult.profileTopicId,\n pfpTopicId,\n transactionId: profileResult.transactionId,\n success: true,\n };\n } catch (error: any) {\n this.logger.error(`Error storing HCS-11 profile: ${error.message}`);\n return {\n profileTopicId: '',\n pfpTopicId: '',\n transactionId: '',\n success: false,\n error: error.message,\n };\n }\n }\n\n private async setupFees(\n transaction: TopicCreateTransaction,\n feeConfig: TopicFeeConfig,\n additionalExemptAccounts: string[] = []\n ): Promise<void> {\n if (!this.client.operatorPublicKey) {\n return;\n }\n\n this.logger.info('Setting up topic with custom fees');\n\n const customFee = new CustomFixedFee()\n .setAmount(Number(feeConfig.feeAmount.amount))\n .setFeeCollectorAccountId(\n AccountId.fromString(feeConfig.feeCollectorAccountId)\n );\n\n let exemptAccountIds = [\n ...(feeConfig.exemptAccounts || []),\n ...additionalExemptAccounts,\n ];\n\n console.log('exemptAccountIds', exemptAccountIds);\n\n if (exemptAccountIds.length > 0) {\n const uniqueExemptAccountIds = Array.from(new Set(exemptAccountIds));\n const filteredExemptAccounts = uniqueExemptAccountIds.filter(\n (account) => account !== this.client.operatorAccountId?.toString()\n );\n\n let exemptKeys: PublicKey[] = [];\n if (filteredExemptAccounts.length > 0) {\n try {\n exemptKeys = await accountIdsToExemptKeys(\n filteredExemptAccounts,\n this.network,\n this.logger\n );\n } catch (error) {\n this.logger.warn(\n `Error getting exempt keys: ${error}, continuing without exempt keys`\n );\n }\n }\n\n if (exemptKeys.length > 0) {\n transaction.setFeeExemptKeys(exemptKeys);\n }\n }\n\n transaction\n .setFeeScheduleKey(this.client.operatorPublicKey)\n .setCustomFees([customFee]);\n }\n\n /**\n * Handles a connection request from another account\n * @param inboundTopicId Inbound topic ID\n * @param requestingAccountId Requesting account ID\n * @param connectionRequestId Connection request ID\n * @param connectionFeeConfig Optional fee configuration for the connection topic\n * @param ttl Optional ttl parameter with default\n * @returns Response with connection details\n */\n async handleConnectionRequest(\n inboundTopicId: string,\n requestingAccountId: string,\n connectionRequestId: number,\n connectionFeeConfig?: FeeConfigBuilderInterface,\n ttl: number = 60\n ): Promise<HandleConnectionRequestResponse> {\n const memo = this._generateHcs10Memo(Hcs10MemoType.CONNECTION, {\n ttl,\n inboundTopicId,\n connectionId: connectionRequestId,\n });\n this.logger.info(\n `Handling connection request ${connectionRequestId} from ${requestingAccountId}`\n );\n\n const accountId = this.getClient().operatorAccountId?.toString();\n if (!accountId) {\n throw new Error('Failed to retrieve operator account ID');\n }\n\n let requesterKey = await this.mirrorNode.getPublicKey(requestingAccountId);\n const accountKey = await this.mirrorNode.getPublicKey(accountId);\n\n if (!accountKey) {\n throw new Error('Failed to retrieve public key');\n }\n\n const thresholdKey = new KeyList([accountKey, requesterKey], 1);\n\n let connectionTopicId: string;\n\n try {\n if (connectionFeeConfig) {\n const feeConfig = connectionFeeConfig.build();\n const modifiedFeeConfig = {\n ...feeConfig,\n exemptAccounts: [...(feeConfig.exemptAccounts || [])],\n };\n\n connectionTopicId = await this.createTopic(\n memo,\n thresholdKey,\n thresholdKey,\n modifiedFeeConfig\n );\n } else {\n connectionTopicId = await this.createTopic(\n memo,\n thresholdKey,\n thresholdKey\n );\n }\n\n this.logger.info(`Created new connection topic ID: ${connectionTopicId}`);\n } catch (error) {\n this.logger.error(`Failed to create connection topic: ${error}`);\n throw new TopicCreationError(\n `Failed to create connection topic: ${error}`\n );\n }\n\n const operatorId = `${inboundTopicId}@${accountId}`;\n\n const confirmedConnectionSequenceNumber = await this.confirmConnection(\n inboundTopicId,\n connectionTopicId,\n requestingAccountId,\n connectionRequestId,\n 'Connection accepted. Looking forward to collaborating!'\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 memo: string,\n submitKey?: PrivateKey\n ): Promise<number> {\n const operatorId = await this.getOperatorId();\n this.logger.info(`Confirming connection with ID ${connectionId}`);\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 submissionCheck = await this.canSubmitToTopic(\n inboundTopicId,\n this.client.operatorAccountId?.toString() || ''\n );\n\n const result = await this.submitPayload(\n inboundTopicId,\n payload,\n submitKey,\n submissionCheck.requiresFee\n );\n\n const sequenceNumber = result.topicSequenceNumber?.toNumber();\n\n if (!sequenceNumber) {\n throw new ConnectionConfirmationError(\n 'Failed to confirm connection: sequence number is null'\n );\n }\n\n return sequenceNumber;\n }\n\n async sendMessage(\n connectionTopicId: string,\n data: string,\n memo?: string,\n submitKey?: PrivateKey\n ): Promise<TransactionReceipt> {\n const submissionCheck = await this.canSubmitToTopic(\n connectionTopicId,\n this.client.operatorAccountId?.toString() || ''\n );\n\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 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\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 this.logger.info('Submitting message to connection topic', payload);\n return await this.submitPayload(\n connectionTopicId,\n payload,\n submitKey,\n submissionCheck.requiresFee\n );\n }\n\n async createTopic(\n memo: string,\n adminKey?: boolean | PublicKey | KeyList,\n submitKey?: boolean | PublicKey | KeyList,\n feeConfig?: TopicFeeConfig\n ): Promise<string> {\n this.logger.info('Creating topic');\n const transaction = new TopicCreateTransaction().setTopicMemo(memo);\n\n if (adminKey) {\n if (\n typeof adminKey === 'boolean' &&\n adminKey &&\n this.client.operatorPublicKey\n ) {\n transaction.setAdminKey(this.client.operatorPublicKey);\n transaction.setAutoRenewAccountId(this.client.operatorAccountId!);\n } else if (adminKey instanceof PublicKey || adminKey instanceof KeyList) {\n transaction.setAdminKey(adminKey);\n if (this.client.operatorAccountId) {\n transaction.setAutoRenewAccountId(this.client.operatorAccountId);\n }\n }\n }\n\n if (submitKey) {\n if (\n typeof submitKey === 'boolean' &&\n submitKey &&\n this.client.operatorPublicKey\n ) {\n transaction.setSubmitKey(this.client.operatorPublicKey);\n } else if (\n submitKey instanceof PublicKey ||\n submitKey instanceof KeyList\n ) {\n transaction.setSubmitKey(submitKey);\n }\n }\n\n if (feeConfig) {\n await this.setupFees(transaction, feeConfig);\n }\n\n this.logger.debug('Executing topic creation transaction');\n const txResponse = await transaction.execute(this.client);\n const receipt = await txResponse.getReceipt(this.client);\n\n if (!receipt.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 topicId = receipt.topicId.toString();\n return topicId;\n }\n\n public async submitPayload(\n topicId: string,\n payload: object | string,\n submitKey?: PrivateKey,\n requiresFee: boolean = false\n ): Promise<TransactionReceipt> {\n const message =\n typeof payload === 'string' ? payload : JSON.stringify(payload);\n\n const payloadSizeInBytes = Buffer.byteLength(message, 'utf8');\n if (payloadSizeInBytes > 1000) {\n throw new PayloadSizeError(\n 'Payload size exceeds 1000 bytes limit',\n payloadSizeInBytes\n );\n }\n\n const transaction = new TopicMessageSubmitTransaction()\n .setTopicId(TopicId.fromString(topicId))\n .setMessage(message);\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 transaction.setTransactionMemo('HIP-991 Fee Payment');\n }\n\n let transactionResponse: TransactionResponse;\n if (submitKey) {\n const frozenTransaction = transaction.freezeWith(this.client);\n const signedTransaction = await frozenTransaction.sign(submitKey);\n transactionResponse = await signedTransaction.execute(this.client);\n } else {\n transactionResponse = await transaction.execute(this.client);\n }\n\n const receipt = await transactionResponse.getReceipt(this.client);\n if (!receipt) {\n this.logger.error('Failed to submit message: receipt is null');\n throw new Error('Failed to submit message: receipt is null');\n }\n this.logger.info('Message submitted successfully');\n return receipt;\n }\n\n async submitConnectionRequest(\n inboundTopicId: string,\n memo: string\n ): Promise<TransactionReceipt> {\n const accountResponse = this.getAccountAndSigner();\n if (!accountResponse.accountId) {\n throw new Error('Operator account ID is not set');\n }\n const operatorId = await this.getOperatorId();\n const accountId = accountResponse.accountId;\n\n const submissionCheck = await this.canSubmitToTopic(\n inboundTopicId,\n accountId\n );\n\n if (!submissionCheck.canSubmit) {\n throw new Error(`Cannot submit to topic: ${submissionCheck.reason}`);\n }\n\n const connectionRequestMessage = {\n p: 'hcs-10',\n op: 'connection_request',\n operator_id: operatorId,\n m: memo,\n };\n\n const requiresFee = submissionCheck.requiresFee;\n const response = await this.submitPayload(\n inboundTopicId,\n connectionRequestMessage,\n undefined,\n requiresFee\n );\n\n this.logger.info(\n `Submitted connection request to topic ID: ${inboundTopicId}`\n );\n\n const outboundTopic = await this.retrieveOutboundConnectTopic(accountId);\n\n const responseSequenceNumber = response.topicSequenceNumber?.toNumber();\n\n if (!responseSequenceNumber) {\n throw new Error('Failed to get response sequence number');\n }\n\n await this.submitPayload(outboundTopic.outboundTopic, {\n ...connectionRequestMessage,\n outbound_topic_id: outboundTopic.outboundTopic,\n connection_request_id: responseSequenceNumber,\n });\n\n return response;\n }\n\n async inscribeFile(\n buffer: Buffer,\n fileName: string\n ): Promise<RetrievedInscriptionResult> {\n this.logger.info('Inscribing file');\n if (!this.client.operatorAccountId) {\n this.logger.error('Operator account ID is not set');\n throw new Error('Operator account ID is not set');\n }\n\n if (!this.operatorPrivateKey) {\n this.logger.error('Operator private key is not set');\n throw new Error('Operator private key is not set');\n }\n\n const mimeType = mime.lookup(fileName) || 'application/octet-stream';\n\n const sdk = await InscriptionSDK.createWithAuth({\n type: 'server',\n accountId: this.client.operatorAccountId.toString(),\n privateKey: this.operatorPrivateKey.toString(),\n network: this.network as 'testnet' | 'mainnet',\n });\n\n const result = await sdk.inscribeAndExecute(\n {\n file: {\n type: 'base64',\n base64: buffer.toString('base64'),\n fileName,\n mimeType,\n },\n holderId: this.client.operatorAccountId.toString(),\n mode: 'file',\n network: this.network as 'testnet' | 'mainnet',\n },\n {\n accountId: this.client.operatorAccountId.toString(),\n privateKey: this.operatorPrivateKey.toString(),\n network: this.network as 'testnet' | 'mainnet',\n }\n );\n\n if (!result.transactionId || !result.jobId) {\n this.logger.error('Failed to inscribe, no transaction ID or job ID.');\n throw new Error('Failed to inscribe, no transaction ID or job ID.');\n }\n\n if (result.transactionId && result.jobId) {\n this.logger.info(\n `Transaction ID: ${result.transactionId}, Job ID: ${result.jobId}`\n );\n }\n\n const status = await sdk.waitForInscription(result.jobId, 30, 4000, true);\n return status;\n }\n\n /**\n * Waits for confirmation of a connection request\n * @param inboundTopicId Inbound topic ID\n * @param connectionRequestId Connection request ID\n * @param maxAttempts Maximum number of attempts\n * @param delayMs Delay between attempts in milliseconds\n * @returns Connection confirmation details\n */\n async waitForConnectionConfirmation(\n inboundTopicId: string,\n connectionRequestId: number,\n maxAttempts = 60,\n delayMs = 2000\n ): Promise<WaitForConnectionConfirmationResponse> {\n this.logger.info(\n `Waiting for connection confirmation on inbound topic ${inboundTopicId} for request ID ${connectionRequestId}`\n );\n\n for (let attempt = 0; attempt < maxAttempts; attempt++) {\n this.logger.info(\n `Attempt ${attempt + 1}/${maxAttempts} to find connection confirmation`\n );\n const messages = await this.mirrorNode.getTopicMessages(inboundTopicId);\n\n const connectionCreatedMessages = messages.filter(\n (m) => m.op === 'connection_created'\n );\n\n this.logger.info(\n `Found ${connectionCreatedMessages.length} connection_created messages`\n );\n\n if (connectionCreatedMessages.length > 0) {\n for (const message of connectionCreatedMessages) {\n if (Number(message.connection_id) === Number(connectionRequestId)) {\n this.logger.info('Connection confirmation found');\n return {\n connectionTopicId: message.connection_topic_id,\n sequence_number: Number(message.sequence_number),\n confirmedBy: message.operator_id,\n memo: message.m,\n };\n }\n }\n }\n\n if (attempt < maxAttempts - 1) {\n this.logger.info(\n `No matching confirmation found, waiting ${delayMs}ms before retrying...`\n );\n await new Promise((resolve) => setTimeout(resolve, delayMs));\n }\n }\n\n throw new Error(\n `Connection confirmation not found after ${maxAttempts} attempts for request ID ${connectionRequestId}`\n );\n }\n\n getAccountAndSigner(): GetAccountAndSignerResponse {\n return {\n accountId: this.client.operatorAccountId!.toString()!,\n signer: this.operatorPrivateKey,\n };\n }\n\n /**\n * Creates and registers an agent with a Guarded registry.\n *\n * This function performs the following steps:\n * 1. Creates a new account if no existing account is provided.\n * 2. Initializes an HCS10 client with the new account.\n * 3. Creates an agent on the client.\n * 4. Registers the agent with the Hashgraph Online Guarded Registry.\n *\n * @param builder The agent builder object\n * @param options Optional configuration including progress callback and state management\n * @returns Agent registration result\n */\n async createAndRegisterAgent(\n builder: AgentBuilder,\n options?: {\n baseUrl?: string;\n progressCallback?: RegistrationProgressCallback;\n existingState?: AgentCreationState;\n }\n ): Promise<AgentRegistrationResult> {\n try {\n const config = builder.build();\n const progressCallback = options?.progressCallback;\n const baseUrl = options?.baseUrl || this.guardedRegistryBaseUrl;\n let state = options?.existingState || undefined;\n\n if (progressCallback) {\n progressCallback({\n stage: 'preparing',\n message: 'Preparing agent registration',\n progressPercent: 10,\n details: { state },\n });\n }\n\n const account = config.existingAccount || (await this.createAccount());\n\n if (progressCallback) {\n progressCallback({\n stage: 'preparing',\n message: 'Created account or using existing account',\n progressPercent: 20,\n details: { state, account },\n });\n }\n\n const agentClient = new HCS10Client({\n network: config.network,\n operatorId: account.accountId,\n operatorPrivateKey: account.privateKey,\n operatorPublicKey: PrivateKey.fromString(\n account.privateKey\n ).publicKey.toString(),\n logLevel: 'info' as LogLevel,\n guardedRegistryBaseUrl: baseUrl,\n });\n\n if (progressCallback) {\n progressCallback({\n stage: 'preparing',\n message: 'Initialized agent client',\n progressPercent: 30,\n details: { state },\n });\n }\n\n const { outboundTopicId, inboundTopicId, pfpTopicId, profileTopicId } =\n await agentClient.createAgent(builder);\n\n if (progressCallback) {\n progressCallback({\n stage: 'submitting',\n message: 'Created agent with topics and profile',\n progressPercent: 60,\n details: {\n state,\n outboundTopicId,\n inboundTopicId,\n pfpTopicId,\n profileTopicId,\n },\n });\n }\n\n const operatorId = `${inboundTopicId}@${account.accountId}`;\n\n const registrationResult =\n await agentClient.registerAgentWithGuardedRegistry(\n account.accountId,\n config.network,\n {\n progressCallback: (data) => {\n const adjustedPercent = 60 + (data.progressPercent || 0) * 0.4;\n if (progressCallback) {\n progressCallback({\n stage: data.stage,\n message: data.message,\n progressPercent: adjustedPercent,\n details: {\n ...data.details,\n outboundTopicId,\n inboundTopicId,\n pfpTopicId,\n profileTopicId,\n operatorId,\n state: data.details?.state || state,\n },\n });\n }\n },\n existingState: state,\n }\n );\n\n if (!registrationResult.success) {\n return registrationResult;\n }\n\n if (progressCallback) {\n progressCallback({\n stage: 'completed',\n message: 'Agent creation and registration complete',\n progressPercent: 100,\n details: {\n outboundTopicId,\n inboundTopicId,\n pfpTopicId,\n profileTopicId,\n operatorId,\n state: registrationResult.state,\n },\n });\n }\n\n return {\n ...registrationResult,\n metadata: {\n accountId: account.accountId,\n privateKey: account.privateKey,\n operatorId,\n inboundTopicId,\n outboundTopicId,\n profileTopicId,\n pfpTopicId,\n },\n };\n } catch (error: any) {\n this.logger.error(\n `Failed to create and register agent: ${error.message}`\n );\n return {\n error: error.message,\n success: false,\n };\n }\n }\n\n /**\n * Registers an agent with the guarded registry\n * @param accountId Account ID to register\n * @param inboundTopicId Inbound topic ID for the agent\n * @param network Network type ('mainnet' or 'testnet')\n * @param options Optional configuration including progress callback and confirmation settings\n * @returns Registration result\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 maxAttempts = options?.maxAttempts ?? 60;\n const delayMs = options?.delayMs ?? 2000;\n const progressCallback = options?.progressCallback;\n let state =\n options?.existingState ||\n ({\n currentStage: 'registration',\n completedPercentage: 0,\n createdResources: [],\n } as AgentCreationState);\n\n if (progressCallback) {\n progressCallback({\n stage: 'preparing',\n message: 'Preparing agent registration',\n progressPercent: 10,\n details: {\n state,\n },\n });\n }\n\n const registrationResult = await this.executeRegistration(\n accountId,\n network,\n this.guardedRegistryBaseUrl,\n this.logger\n );\n\n if (!registrationResult.success) {\n return {\n ...registrationResult,\n state,\n };\n }\n\n if (progressCallback) {\n progressCallback({\n stage: 'submitting',\n message: 'Submitting registration to registry',\n progressPercent: 30,\n details: {\n transactionId: registrationResult.transactionId,\n state,\n },\n });\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 await transaction.execute(this.client);\n this.logger.info(`Successfully processed registration transaction`);\n }\n\n if (progressCallback) {\n progressCallback({\n stage: 'confirming',\n message: 'Confirming registration transaction',\n progressPercent: 60,\n details: {\n accountId,\n transactionId: registrationResult.transactionId,\n state,\n },\n });\n }\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 state.currentStage = 'complete';\n state.completedPercentage = 100;\n if (!state.createdResources) {\n state.createdResources = [];\n }\n if (registrationResult.transactionId) {\n state.createdResources.push(\n `registration:${registrationResult.transactionId}`\n );\n }\n\n if (progressCallback) {\n progressCallback({\n stage: 'completed',\n message: 'Agent registration complete',\n progressPercent: 100,\n details: {\n confirmed,\n transactionId: registrationResult.transactionId,\n state,\n },\n });\n }\n\n return {\n ...registrationResult,\n confirmed,\n state,\n };\n } catch (error: any) {\n this.logger.error(`Failed to register agent: ${error.message}`);\n return {\n error: error.message,\n success: false,\n };\n }\n }\n\n /**\n * Registers an agent with the guarded registry. Should be called by a registry.\n * @param registryTopicId - The topic ID of the guarded registry.\n * @param accountId - The account ID of the agent\n * @param inboundTopicId - The topic ID of the inbound topic\n * @param memo - The memo of the agent\n * @param submitKey - The submit key of the agent\n */\n async registerAgent(\n registryTopicId: string,\n accountId: string,\n inboundTopicId: string,\n memo: string,\n submitKey?: PrivateKey\n ): Promise<void> {\n this.logger.info('Registering agent');\n const payload = {\n p: 'hcs-10',\n op: 'register',\n account_id: accountId,\n inbound_topic_id: inboundTopicId,\n m: memo,\n };\n\n await this.submitPayload(registryTopicId, payload, submitKey);\n }\n\n async getInboundTopicType(topicId: string): Promise<InboundTopicType> {\n try {\n const topicInfo = await this.mirrorNode.getTopicInfo(topicId);\n\n if (!topicInfo) {\n throw new Error('Topic does not exist');\n }\n\n const hasSubmitKey = topicInfo.submit_key && topicInfo.submit_key.key;\n\n if (!hasSubmitKey) {\n return InboundTopicType.PUBLIC;\n }\n\n const hasFeeScheduleKey =\n topicInfo.fee_schedule_key && topicInfo.fee_schedule_key.key;\n\n if (hasFeeScheduleKey && topicInfo.custom_fees) {\n const customFees = topicInfo.custom_fees;\n\n if (\n customFees &&\n customFees.fixed_fees &&\n customFees.fixed_fees.length > 0\n ) {\n this.logger.info(\n `Topic ${topicId} is fee-based with ${customFees.fixed_fees.length} custom fees`\n );\n return InboundTopicType.FEE_BASED;\n }\n }\n\n return InboundTopicType.CONTROLLED;\n } catch (error: any) {\n this.logger.error(`Error determining topic type: ${error.message}`);\n throw new Error(`Failed to determine topic type: ${error.message}`);\n }\n }\n\n getNetwork(): string {\n return this.network;\n }\n\n getLogger(): Logger {\n return this.logger;\n }\n}\n"],"names":["mime.lookup"],"mappings":"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"}
|
|
@@ -1,35 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
function encode(val) {
|
|
4
|
-
return encodeURIComponent(val).replace(/%3A/gi, ":").replace(/%24/g, "$").replace(/%2C/gi, ",").replace(/%20/g, "+").replace(/%5B/gi, "[").replace(/%5D/gi, "]");
|
|
5
|
-
}
|
|
6
|
-
function buildURL(url, params, options) {
|
|
7
|
-
if (!params) {
|
|
8
|
-
return url;
|
|
9
|
-
}
|
|
10
|
-
const _encode = options && options.encode || encode;
|
|
11
|
-
if (utils.isFunction(options)) {
|
|
12
|
-
options = {
|
|
13
|
-
serialize: options
|
|
14
|
-
};
|
|
15
|
-
}
|
|
16
|
-
const serializeFn = options && options.serialize;
|
|
17
|
-
let serializedParams;
|
|
18
|
-
if (serializeFn) {
|
|
19
|
-
serializedParams = serializeFn(params, options);
|
|
20
|
-
} else {
|
|
21
|
-
serializedParams = utils.isURLSearchParams(params) ? params.toString() : new AxiosURLSearchParams(params, options).toString(_encode);
|
|
22
|
-
}
|
|
23
|
-
if (serializedParams) {
|
|
24
|
-
const hashmarkIndex = url.indexOf("#");
|
|
25
|
-
if (hashmarkIndex !== -1) {
|
|
26
|
-
url = url.slice(0, hashmarkIndex);
|
|
27
|
-
}
|
|
28
|
-
url += (url.indexOf("?") === -1 ? "?" : "&") + serializedParams;
|
|
29
|
-
}
|
|
30
|
-
return url;
|
|
1
|
+
function getDefaultExportFromCjs(x) {
|
|
2
|
+
return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, "default") ? x["default"] : x;
|
|
31
3
|
}
|
|
32
4
|
export {
|
|
33
|
-
|
|
5
|
+
getDefaultExportFromCjs
|
|
34
6
|
};
|
|
35
7
|
//# sourceMappingURL=standards-sdk.es52.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"standards-sdk.es52.js","sources":[
|
|
1
|
+
{"version":3,"file":"standards-sdk.es52.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;"}
|