@gnolang/tm2-js-client 2.0.4 → 2.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (232) hide show
  1. package/CHANGELOG.md +424 -0
  2. package/CONTRIBUTING.md +83 -0
  3. package/dist/_virtual/_@oxc-project_runtime@0.143.0/helpers/esm/defineProperty.cjs +12 -0
  4. package/dist/_virtual/{_@oxc-project_runtime@0.122.0/helpers → _@oxc-project_runtime@0.143.0/helpers/esm}/defineProperty.mjs +3 -3
  5. package/dist/_virtual/{_@oxc-project_runtime@0.122.0/helpers → _@oxc-project_runtime@0.143.0/helpers/esm}/toPrimitive.cjs +4 -4
  6. package/dist/_virtual/{_@oxc-project_runtime@0.122.0/helpers → _@oxc-project_runtime@0.143.0/helpers/esm}/toPrimitive.mjs +3 -3
  7. package/dist/_virtual/_@oxc-project_runtime@0.143.0/helpers/esm/toPropertyKey.cjs +9 -0
  8. package/dist/_virtual/_@oxc-project_runtime@0.143.0/helpers/esm/toPropertyKey.mjs +9 -0
  9. package/dist/_virtual/{_@oxc-project_runtime@0.122.0/helpers → _@oxc-project_runtime@0.143.0/helpers/esm}/typeof.cjs +2 -2
  10. package/dist/_virtual/{_@oxc-project_runtime@0.122.0/helpers → _@oxc-project_runtime@0.143.0/helpers/esm}/typeof.mjs +2 -2
  11. package/dist/_virtual/_rolldown/runtime.cjs +1 -1
  12. package/dist/index.d.cts +5 -0
  13. package/dist/index.d.mts +5 -0
  14. package/dist/proto/google/protobuf/any.cjs +3 -4
  15. package/dist/proto/google/protobuf/any.cjs.map +1 -1
  16. package/dist/proto/google/protobuf/any.d.cts +3 -4
  17. package/dist/proto/google/protobuf/any.d.cts.map +1 -1
  18. package/dist/proto/google/protobuf/any.d.mts +3 -4
  19. package/dist/proto/google/protobuf/any.d.mts.map +1 -1
  20. package/dist/proto/google/protobuf/any.mjs +3 -3
  21. package/dist/proto/google/protobuf/any.mjs.map +1 -1
  22. package/dist/proto/index.cjs +15 -4
  23. package/dist/proto/index.d.cts +2 -1
  24. package/dist/proto/index.d.mts +2 -1
  25. package/dist/proto/index.mjs +5 -5
  26. package/dist/proto/tm2/abci.cjs +3 -4
  27. package/dist/proto/tm2/abci.cjs.map +1 -1
  28. package/dist/proto/tm2/abci.d.cts +3 -4
  29. package/dist/proto/tm2/abci.d.cts.map +1 -1
  30. package/dist/proto/tm2/abci.d.mts +3 -4
  31. package/dist/proto/tm2/abci.d.mts.map +1 -1
  32. package/dist/proto/tm2/abci.mjs +3 -3
  33. package/dist/proto/tm2/abci.mjs.map +1 -1
  34. package/dist/proto/tm2/multisig.cjs +3 -4
  35. package/dist/proto/tm2/multisig.cjs.map +1 -1
  36. package/dist/proto/tm2/multisig.d.cts +3 -4
  37. package/dist/proto/tm2/multisig.d.cts.map +1 -1
  38. package/dist/proto/tm2/multisig.d.mts +3 -4
  39. package/dist/proto/tm2/multisig.d.mts.map +1 -1
  40. package/dist/proto/tm2/multisig.mjs +3 -3
  41. package/dist/proto/tm2/multisig.mjs.map +1 -1
  42. package/dist/proto/tm2/tx.cjs +6 -7
  43. package/dist/proto/tm2/tx.cjs.map +1 -1
  44. package/dist/proto/tm2/tx.d.cts +2 -3
  45. package/dist/proto/tm2/tx.d.cts.map +1 -1
  46. package/dist/proto/tm2/tx.d.mts +2 -3
  47. package/dist/proto/tm2/tx.d.mts.map +1 -1
  48. package/dist/proto/tm2/tx.mjs +6 -6
  49. package/dist/proto/tm2/tx.mjs.map +1 -1
  50. package/dist/provider/endpoints.cjs.map +1 -1
  51. package/dist/provider/endpoints.d.cts.map +1 -1
  52. package/dist/provider/endpoints.d.mts.map +1 -1
  53. package/dist/provider/endpoints.mjs.map +1 -1
  54. package/dist/provider/errors/errors.cjs +2 -2
  55. package/dist/provider/errors/errors.cjs.map +1 -1
  56. package/dist/provider/errors/errors.d.cts.map +1 -1
  57. package/dist/provider/errors/errors.d.mts.map +1 -1
  58. package/dist/provider/errors/errors.mjs +1 -1
  59. package/dist/provider/errors/errors.mjs.map +1 -1
  60. package/dist/provider/errors/index.cjs +20 -1
  61. package/dist/provider/errors/index.d.cts +2 -1
  62. package/dist/provider/errors/index.d.mts +2 -1
  63. package/dist/provider/errors/index.mjs +2 -2
  64. package/dist/provider/index.cjs +61 -9
  65. package/dist/provider/index.d.cts +7 -1
  66. package/dist/provider/index.d.mts +7 -1
  67. package/dist/provider/index.mjs +10 -10
  68. package/dist/provider/jsonrpc/index.cjs +2 -1
  69. package/dist/provider/jsonrpc/index.d.cts +2 -1
  70. package/dist/provider/jsonrpc/index.d.mts +2 -1
  71. package/dist/provider/jsonrpc/index.mjs +2 -2
  72. package/dist/provider/jsonrpc/jsonrpc.cjs +2 -2
  73. package/dist/provider/jsonrpc/jsonrpc.cjs.map +1 -1
  74. package/dist/provider/jsonrpc/jsonrpc.d.cts +0 -1
  75. package/dist/provider/jsonrpc/jsonrpc.d.cts.map +1 -1
  76. package/dist/provider/jsonrpc/jsonrpc.d.mts +0 -1
  77. package/dist/provider/jsonrpc/jsonrpc.d.mts.map +1 -1
  78. package/dist/provider/jsonrpc/jsonrpc.mjs +2 -1
  79. package/dist/provider/jsonrpc/jsonrpc.mjs.map +1 -1
  80. package/dist/provider/provider.cjs +8 -9
  81. package/dist/provider/provider.cjs.map +1 -1
  82. package/dist/provider/provider.d.cts +2 -1
  83. package/dist/provider/provider.d.cts.map +1 -1
  84. package/dist/provider/provider.d.mts +2 -1
  85. package/dist/provider/provider.d.mts.map +1 -1
  86. package/dist/provider/provider.mjs +43 -26
  87. package/dist/provider/provider.mjs.map +1 -1
  88. package/dist/provider/types/abci.d.cts.map +1 -1
  89. package/dist/provider/types/abci.d.mts.map +1 -1
  90. package/dist/provider/types/common.d.cts +1 -2
  91. package/dist/provider/types/common.d.cts.map +1 -1
  92. package/dist/provider/types/common.d.mts +1 -2
  93. package/dist/provider/types/common.d.mts.map +1 -1
  94. package/dist/provider/types/index.cjs +2 -1
  95. package/dist/provider/types/index.d.cts +2 -1
  96. package/dist/provider/types/index.d.mts +2 -1
  97. package/dist/provider/types/index.mjs +2 -2
  98. package/dist/provider/types/jsonrpc.d.cts.map +1 -1
  99. package/dist/provider/types/jsonrpc.d.mts.map +1 -1
  100. package/dist/provider/utility/adapters.cjs +1 -1
  101. package/dist/provider/utility/adapters.cjs.map +1 -1
  102. package/dist/provider/utility/adapters.d.cts +1 -1
  103. package/dist/provider/utility/adapters.d.cts.map +1 -1
  104. package/dist/provider/utility/adapters.d.mts +1 -1
  105. package/dist/provider/utility/adapters.d.mts.map +1 -1
  106. package/dist/provider/utility/adapters.mjs +1 -1
  107. package/dist/provider/utility/adapters.mjs.map +1 -1
  108. package/dist/provider/utility/errors.utility.cjs.map +1 -1
  109. package/dist/provider/utility/errors.utility.mjs.map +1 -1
  110. package/dist/provider/utility/index.cjs +27 -3
  111. package/dist/provider/utility/index.d.cts +2 -1
  112. package/dist/provider/utility/index.d.mts +2 -1
  113. package/dist/provider/utility/index.mjs +4 -4
  114. package/dist/provider/utility/provider.utility.cjs +0 -1
  115. package/dist/provider/utility/provider.utility.cjs.map +1 -1
  116. package/dist/provider/utility/provider.utility.d.cts +2 -1
  117. package/dist/provider/utility/provider.utility.d.cts.map +1 -1
  118. package/dist/provider/utility/provider.utility.d.mts +2 -1
  119. package/dist/provider/utility/provider.utility.d.mts.map +1 -1
  120. package/dist/provider/utility/provider.utility.mjs +2 -1
  121. package/dist/provider/utility/provider.utility.mjs.map +1 -1
  122. package/dist/provider/utility/requests.utility.cjs +0 -1
  123. package/dist/provider/utility/requests.utility.cjs.map +1 -1
  124. package/dist/provider/utility/requests.utility.d.cts +1 -1
  125. package/dist/provider/utility/requests.utility.d.cts.map +1 -1
  126. package/dist/provider/utility/requests.utility.d.mts +1 -1
  127. package/dist/provider/utility/requests.utility.d.mts.map +1 -1
  128. package/dist/provider/utility/requests.utility.mjs.map +1 -1
  129. package/dist/provider/websocket/index.cjs +2 -1
  130. package/dist/provider/websocket/index.d.cts +2 -1
  131. package/dist/provider/websocket/index.d.mts +2 -1
  132. package/dist/provider/websocket/index.mjs +2 -2
  133. package/dist/provider/websocket/ws.cjs +2 -2
  134. package/dist/provider/websocket/ws.cjs.map +1 -1
  135. package/dist/provider/websocket/ws.d.cts +0 -1
  136. package/dist/provider/websocket/ws.d.cts.map +1 -1
  137. package/dist/provider/websocket/ws.d.mts +0 -1
  138. package/dist/provider/websocket/ws.d.mts.map +1 -1
  139. package/dist/provider/websocket/ws.mjs +2 -1
  140. package/dist/provider/websocket/ws.mjs.map +1 -1
  141. package/dist/services/index.cjs +2 -1
  142. package/dist/services/index.d.cts +2 -1
  143. package/dist/services/index.d.mts +2 -1
  144. package/dist/services/index.mjs +2 -2
  145. package/dist/services/rest/restService.cjs +1 -1
  146. package/dist/services/rest/restService.cjs.map +1 -1
  147. package/dist/services/rest/restService.d.cts +0 -1
  148. package/dist/services/rest/restService.d.cts.map +1 -1
  149. package/dist/services/rest/restService.d.mts +0 -1
  150. package/dist/services/rest/restService.d.mts.map +1 -1
  151. package/dist/services/rest/restService.mjs.map +1 -1
  152. package/dist/services/rest/restService.types.d.cts +1 -1
  153. package/dist/services/rest/restService.types.d.cts.map +1 -1
  154. package/dist/services/rest/restService.types.d.mts +1 -1
  155. package/dist/services/rest/restService.types.d.mts.map +1 -1
  156. package/dist/utility/compact-bit-array.cjs +1 -1
  157. package/dist/utility/compact-bit-array.cjs.map +1 -1
  158. package/dist/utility/compact-bit-array.d.cts +0 -1
  159. package/dist/utility/compact-bit-array.d.cts.map +1 -1
  160. package/dist/utility/compact-bit-array.d.mts +0 -1
  161. package/dist/utility/compact-bit-array.d.mts.map +1 -1
  162. package/dist/utility/compact-bit-array.mjs +1 -1
  163. package/dist/utility/compact-bit-array.mjs.map +1 -1
  164. package/dist/utility/index.cjs +3 -1
  165. package/dist/utility/index.d.cts +2 -1
  166. package/dist/utility/index.d.mts +2 -1
  167. package/dist/utility/index.mjs +2 -2
  168. package/dist/wallet/index.cjs +16 -5
  169. package/dist/wallet/index.d.cts +6 -1
  170. package/dist/wallet/index.d.mts +6 -1
  171. package/dist/wallet/index.mjs +6 -6
  172. package/dist/wallet/key/index.cjs +2 -1
  173. package/dist/wallet/key/index.d.cts +2 -1
  174. package/dist/wallet/key/index.d.mts +2 -1
  175. package/dist/wallet/key/index.mjs +2 -2
  176. package/dist/wallet/key/key.cjs +9 -10
  177. package/dist/wallet/key/key.cjs.map +1 -1
  178. package/dist/wallet/key/key.d.cts +0 -1
  179. package/dist/wallet/key/key.d.cts.map +1 -1
  180. package/dist/wallet/key/key.d.mts +0 -1
  181. package/dist/wallet/key/key.d.mts.map +1 -1
  182. package/dist/wallet/key/key.mjs +1 -1
  183. package/dist/wallet/key/key.mjs.map +1 -1
  184. package/dist/wallet/ledger/index.cjs +2 -1
  185. package/dist/wallet/ledger/index.d.cts +2 -1
  186. package/dist/wallet/ledger/index.d.mts +2 -1
  187. package/dist/wallet/ledger/index.mjs +2 -2
  188. package/dist/wallet/ledger/ledger.cjs +9 -10
  189. package/dist/wallet/ledger/ledger.cjs.map +1 -1
  190. package/dist/wallet/ledger/ledger.d.cts +0 -1
  191. package/dist/wallet/ledger/ledger.d.cts.map +1 -1
  192. package/dist/wallet/ledger/ledger.d.mts +0 -1
  193. package/dist/wallet/ledger/ledger.d.mts.map +1 -1
  194. package/dist/wallet/ledger/ledger.mjs +3 -2
  195. package/dist/wallet/ledger/ledger.mjs.map +1 -1
  196. package/dist/wallet/signer.d.cts.map +1 -1
  197. package/dist/wallet/signer.d.mts.map +1 -1
  198. package/dist/wallet/types/index.cjs +2 -1
  199. package/dist/wallet/types/index.d.cts +2 -1
  200. package/dist/wallet/types/index.d.mts +2 -1
  201. package/dist/wallet/types/index.mjs +2 -2
  202. package/dist/wallet/types/sign.d.cts.map +1 -1
  203. package/dist/wallet/types/sign.d.mts.map +1 -1
  204. package/dist/wallet/types/wallet.d.cts.map +1 -1
  205. package/dist/wallet/types/wallet.d.mts.map +1 -1
  206. package/dist/wallet/utility/index.cjs +8 -1
  207. package/dist/wallet/utility/index.d.cts +2 -1
  208. package/dist/wallet/utility/index.d.mts +2 -1
  209. package/dist/wallet/utility/index.mjs +2 -2
  210. package/dist/wallet/utility/utility.cjs +1 -1
  211. package/dist/wallet/utility/utility.cjs.map +1 -1
  212. package/dist/wallet/utility/utility.d.cts +0 -1
  213. package/dist/wallet/utility/utility.d.cts.map +1 -1
  214. package/dist/wallet/utility/utility.d.mts +0 -1
  215. package/dist/wallet/utility/utility.d.mts.map +1 -1
  216. package/dist/wallet/utility/utility.mjs.map +1 -1
  217. package/dist/wallet/wallet.cjs +16 -17
  218. package/dist/wallet/wallet.cjs.map +1 -1
  219. package/dist/wallet/wallet.d.cts +3 -1
  220. package/dist/wallet/wallet.d.cts.map +1 -1
  221. package/dist/wallet/wallet.d.mts +3 -1
  222. package/dist/wallet/wallet.d.mts.map +1 -1
  223. package/dist/wallet/wallet.mjs +4 -3
  224. package/dist/wallet/wallet.mjs.map +1 -1
  225. package/package.json +38 -36
  226. package/dist/_virtual/_@oxc-project_runtime@0.122.0/helpers/defineProperty.cjs +0 -12
  227. package/dist/_virtual/_@oxc-project_runtime@0.122.0/helpers/toPropertyKey.cjs +0 -9
  228. package/dist/_virtual/_@oxc-project_runtime@0.122.0/helpers/toPropertyKey.mjs +0 -9
  229. package/dist/index.cjs.map +0 -1
  230. package/dist/index.d.cts.map +0 -1
  231. package/dist/index.d.mts.map +0 -1
  232. package/dist/index.mjs.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"ledger.d.cts","names":[],"sources":["../../../src/wallet/ledger/ledger.ts"],"mappings":";;;;;;AAoBA;cAAa,YAAA,YAAwB,MAAA;EAAA,iBAClB,SAAA;EAAA,iBACA,MAAA;EAAA,iBACA,aAAA;EAiCgB;;;;;;cAxB/B,SAAA,EAAW,eAAA,EACX,YAAA,UACA,aAAA;EAOF,UAAA,QAAuB,OAAA;EAevB,YAAA,QAAyB,OAAA,CAAQ,UAAA;EAQjC,aAAA,QAA0B,OAAA,CAAQ,UAAA;EAIlC,QAAA,GAAkB,IAAA,EAAM,UAAA,KAAa,OAAA,CAAQ,UAAA;EAQ7C,eAAA,GACE,IAAA,EAAM,UAAA,EACN,SAAA,EAAW,UAAA,KACV,OAAA;AAAA"}
1
+ {"version":3,"file":"ledger.d.cts","names":[],"sources":["../../../src/wallet/ledger/ledger.ts"],"mappings":";;;;;;cAoBa,wBAAwB;mBAClB;mBACA;mBACA;;;;;;;EASf,YAAA,WAAW,iBACX,sBACA;EAOF,kBAAuB;EAevB,oBAAyB,QAAQ;EAQjC,qBAA0B,QAAQ;EAIlC,WAAkB,MAAM,eAAa,QAAQ;EAQ7C,kBACE,MAAM,YACN,WAAW,eACV"}
@@ -1,6 +1,5 @@
1
1
  import { Signer } from "../signer.mjs";
2
2
  import { LedgerConnector } from "@cosmjs/ledger-amino";
3
-
4
3
  //#region src/wallet/ledger/ledger.d.ts
5
4
  /**
6
5
  * LedgerSigner implements the logic for the Ledger device signer
@@ -1 +1 @@
1
- {"version":3,"file":"ledger.d.mts","names":[],"sources":["../../../src/wallet/ledger/ledger.ts"],"mappings":";;;;;;AAoBA;cAAa,YAAA,YAAwB,MAAA;EAAA,iBAClB,SAAA;EAAA,iBACA,MAAA;EAAA,iBACA,aAAA;EAiCgB;;;;;;cAxB/B,SAAA,EAAW,eAAA,EACX,YAAA,UACA,aAAA;EAOF,UAAA,QAAuB,OAAA;EAevB,YAAA,QAAyB,OAAA,CAAQ,UAAA;EAQjC,aAAA,QAA0B,OAAA,CAAQ,UAAA;EAIlC,QAAA,GAAkB,IAAA,EAAM,UAAA,KAAa,OAAA,CAAQ,UAAA;EAQ7C,eAAA,GACE,IAAA,EAAM,UAAA,EACN,SAAA,EAAW,UAAA,KACV,OAAA;AAAA"}
1
+ {"version":3,"file":"ledger.d.mts","names":[],"sources":["../../../src/wallet/ledger/ledger.ts"],"mappings":";;;;;;cAoBa,wBAAwB;mBAClB;mBACA;mBACA;;;;;;;EASf,YAAA,WAAW,iBACX,sBACA;EAOF,kBAAuB;EAevB,oBAAyB,QAAQ;EAQjC,qBAA0B,QAAQ;EAIlC,WAAkB,MAAM,eAAa,QAAQ;EAQ7C,kBACE,MAAM,YACN,WAAW,eACV"}
@@ -1,4 +1,4 @@
1
- import { _defineProperty } from "../../_virtual/_@oxc-project_runtime@0.122.0/helpers/defineProperty.mjs";
1
+ import _defineProperty from "../../_virtual/_@oxc-project_runtime@0.143.0/helpers/esm/defineProperty.mjs";
2
2
  import { generateHDPath } from "../utility/utility.mjs";
3
3
  import "../utility/index.mjs";
4
4
  import { Secp256k1, Secp256k1Signature, sha256 } from "@cosmjs/crypto";
@@ -20,7 +20,8 @@ var LedgerSigner = class {
20
20
  _defineProperty(this, "addressPrefix", void 0);
21
21
  _defineProperty(this, "getAddress", async () => {
22
22
  if (!this.connector) throw new Error("Ledger not connected");
23
- return pubkeyToAddress(encodeSecp256k1Pubkey(await this.connector.getPubkey(this.hdPath)), this.addressPrefix);
23
+ const compressedPubKey = await this.connector.getPubkey(this.hdPath);
24
+ return pubkeyToAddress(encodeSecp256k1Pubkey(compressedPubKey), this.addressPrefix);
24
25
  });
25
26
  _defineProperty(this, "getPublicKey", async () => {
26
27
  if (!this.connector) throw new Error("Ledger not connected");
@@ -1 +1 @@
1
- {"version":3,"file":"ledger.mjs","names":[],"sources":["../../../src/wallet/ledger/ledger.ts"],"sourcesContent":["import {\n encodeSecp256k1Pubkey, pubkeyToAddress,\n} from \"@cosmjs/amino\";\nimport {\n HdPath, Secp256k1, Secp256k1Signature, sha256,\n} from \"@cosmjs/crypto\";\nimport {\n LedgerConnector,\n} from \"@cosmjs/ledger-amino\";\n\nimport {\n Signer,\n} from \"../signer.js\";\nimport {\n defaultAddressPrefix, generateHDPath,\n} from \"../utility/index.js\";\n\n/**\n * LedgerSigner implements the logic for the Ledger device signer\n */\nexport class LedgerSigner implements Signer {\n private readonly connector: LedgerConnector;\n private readonly hdPath: HdPath;\n private readonly addressPrefix: string;\n\n /**\n * Creates a new Ledger device signer instance\n * @param {LedgerConnector} connector the Ledger connector\n * @param {number} accountIndex the desired account index\n * @param {string} addressPrefix the address prefix\n */\n constructor(\n connector: LedgerConnector,\n accountIndex: number,\n addressPrefix: string = defaultAddressPrefix,\n ) {\n this.connector = connector;\n this.hdPath = generateHDPath(accountIndex);\n this.addressPrefix = addressPrefix;\n }\n\n getAddress = async (): Promise<string> => {\n if (!this.connector) {\n throw new Error(\"Ledger not connected\");\n }\n\n const compressedPubKey: Uint8Array = await this.connector.getPubkey(\n this.hdPath,\n );\n\n return pubkeyToAddress(\n encodeSecp256k1Pubkey(compressedPubKey),\n this.addressPrefix,\n );\n };\n\n getPublicKey = async (): Promise<Uint8Array> => {\n if (!this.connector) {\n throw new Error(\"Ledger not connected\");\n }\n\n return this.connector.getPubkey(this.hdPath);\n };\n\n getPrivateKey = async (): Promise<Uint8Array> => {\n throw new Error(\"Ledger does not support private key exports\");\n };\n\n signData = async (data: Uint8Array): Promise<Uint8Array> => {\n if (!this.connector) {\n throw new Error(\"Ledger not connected\");\n }\n\n return this.connector.sign(data, this.hdPath);\n };\n\n verifySignature = async (\n data: Uint8Array,\n signature: Uint8Array,\n ): Promise<boolean> => {\n const publicKey = await this.getPublicKey();\n\n return Secp256k1.verifySignature(\n Secp256k1Signature.fromFixedLength(signature),\n sha256(data),\n publicKey,\n );\n };\n}\n"],"mappings":";;;;;;;;;AAoBA,IAAa,eAAb,MAA4C;;;;;;;CAW1C,YACE,WACA,cACA,gBAAA,KACA;wBAde,aAAA,KAAA,EAA2B;wBAC3B,UAAA,KAAA,EAAe;wBACf,iBAAA,KAAA,EAAsB;wBAkBvC,cAAa,YAA6B;AACxC,OAAI,CAAC,KAAK,UACR,OAAM,IAAI,MAAM,uBAAuB;AAOzC,UAAO,gBACL,sBALmC,MAAM,KAAK,UAAU,UACxD,KAAK,OACN,CAGwC,EACvC,KAAK,cACN;IACD;wBAEF,gBAAe,YAAiC;AAC9C,OAAI,CAAC,KAAK,UACR,OAAM,IAAI,MAAM,uBAAuB;AAGzC,UAAO,KAAK,UAAU,UAAU,KAAK,OAAO;IAC5C;wBAEF,iBAAgB,YAAiC;AAC/C,SAAM,IAAI,MAAM,8CAA8C;IAC9D;wBAEF,YAAW,OAAO,SAA0C;AAC1D,OAAI,CAAC,KAAK,UACR,OAAM,IAAI,MAAM,uBAAuB;AAGzC,UAAO,KAAK,UAAU,KAAK,MAAM,KAAK,OAAO;IAC7C;wBAEF,mBAAkB,OAChB,MACA,cACqB;GACrB,MAAM,YAAY,MAAM,KAAK,cAAc;AAE3C,UAAO,UAAU,gBACf,mBAAmB,gBAAgB,UAAU,EAC7C,OAAO,KAAK,EACZ,UACD;IACD;AAnDA,OAAK,YAAY;AACjB,OAAK,SAAS,eAAe,aAAa;AAC1C,OAAK,gBAAgB"}
1
+ {"version":3,"file":"ledger.mjs","names":[],"sources":["../../../src/wallet/ledger/ledger.ts"],"sourcesContent":["import {\n encodeSecp256k1Pubkey, pubkeyToAddress,\n} from \"@cosmjs/amino\";\nimport {\n HdPath, Secp256k1, Secp256k1Signature, sha256,\n} from \"@cosmjs/crypto\";\nimport {\n LedgerConnector,\n} from \"@cosmjs/ledger-amino\";\n\nimport {\n Signer,\n} from \"../signer.js\";\nimport {\n defaultAddressPrefix, generateHDPath,\n} from \"../utility/index.js\";\n\n/**\n * LedgerSigner implements the logic for the Ledger device signer\n */\nexport class LedgerSigner implements Signer {\n private readonly connector: LedgerConnector;\n private readonly hdPath: HdPath;\n private readonly addressPrefix: string;\n\n /**\n * Creates a new Ledger device signer instance\n * @param {LedgerConnector} connector the Ledger connector\n * @param {number} accountIndex the desired account index\n * @param {string} addressPrefix the address prefix\n */\n constructor(\n connector: LedgerConnector,\n accountIndex: number,\n addressPrefix: string = defaultAddressPrefix,\n ) {\n this.connector = connector;\n this.hdPath = generateHDPath(accountIndex);\n this.addressPrefix = addressPrefix;\n }\n\n getAddress = async (): Promise<string> => {\n if (!this.connector) {\n throw new Error(\"Ledger not connected\");\n }\n\n const compressedPubKey: Uint8Array = await this.connector.getPubkey(\n this.hdPath,\n );\n\n return pubkeyToAddress(\n encodeSecp256k1Pubkey(compressedPubKey),\n this.addressPrefix,\n );\n };\n\n getPublicKey = async (): Promise<Uint8Array> => {\n if (!this.connector) {\n throw new Error(\"Ledger not connected\");\n }\n\n return this.connector.getPubkey(this.hdPath);\n };\n\n getPrivateKey = async (): Promise<Uint8Array> => {\n throw new Error(\"Ledger does not support private key exports\");\n };\n\n signData = async (data: Uint8Array): Promise<Uint8Array> => {\n if (!this.connector) {\n throw new Error(\"Ledger not connected\");\n }\n\n return this.connector.sign(data, this.hdPath);\n };\n\n verifySignature = async (\n data: Uint8Array,\n signature: Uint8Array,\n ): Promise<boolean> => {\n const publicKey = await this.getPublicKey();\n\n return Secp256k1.verifySignature(\n Secp256k1Signature.fromFixedLength(signature),\n sha256(data),\n publicKey,\n );\n };\n}\n"],"mappings":";;;;;;;;;AAoBA,IAAa,eAAb,MAA4C;;;;;;;CAW1C,YACE,WACA,cACA,gBAAA,KACA;EAde,gBAAA,MAAA,aAAA,KAAA,CAAA;EACA,gBAAA,MAAA,UAAA,KAAA,CAAA;EACA,gBAAA,MAAA,iBAAA,KAAA,CAAA;EAkBjB,gBAAA,MAAA,cAAa,YAA6B;GACxC,IAAI,CAAC,KAAK,WACR,MAAM,IAAI,MAAM,sBAAsB;GAGxC,MAAM,mBAA+B,MAAM,KAAK,UAAU,UACxD,KAAK,MACP;GAEA,OAAO,gBACL,sBAAsB,gBAAgB,GACtC,KAAK,aACP;EACF,CAAA;EAEA,gBAAA,MAAA,gBAAe,YAAiC;GAC9C,IAAI,CAAC,KAAK,WACR,MAAM,IAAI,MAAM,sBAAsB;GAGxC,OAAO,KAAK,UAAU,UAAU,KAAK,MAAM;EAC7C,CAAA;EAEA,gBAAA,MAAA,iBAAgB,YAAiC;GAC/C,MAAM,IAAI,MAAM,6CAA6C;EAC/D,CAAA;EAEA,gBAAA,MAAA,YAAW,OAAO,SAA0C;GAC1D,IAAI,CAAC,KAAK,WACR,MAAM,IAAI,MAAM,sBAAsB;GAGxC,OAAO,KAAK,UAAU,KAAK,MAAM,KAAK,MAAM;EAC9C,CAAA;EAEA,gBAAA,MAAA,mBAAkB,OAChB,MACA,cACqB;GACrB,MAAM,YAAY,MAAM,KAAK,aAAa;GAE1C,OAAO,UAAU,gBACf,mBAAmB,gBAAgB,SAAS,GAC5C,OAAO,IAAI,GACX,SACF;EACF,CAAA;EAnDE,KAAK,YAAY;EACjB,KAAK,SAAS,eAAe,YAAY;EACzC,KAAK,gBAAgB;CACvB;AAiDF"}
@@ -1 +1 @@
1
- {"version":3,"file":"signer.d.cts","names":[],"sources":["../../src/wallet/signer.ts"],"mappings":";;AAIA;;;UAAiB,MAAA;EASS;;;EALxB,UAAA,IAAc,OAAA;EAgBC;;;EAXf,YAAA,IAAgB,OAAA,CAAQ,UAAA;EAkBqB;;;EAb7C,aAAA,IAAiB,OAAA,CAAQ,UAAA;EAVzB;;;;EAgBA,QAAA,CAAS,IAAA,EAAM,UAAA,GAAa,OAAA,CAAQ,UAAA;EANpC;;;;;EAaA,eAAA,CAAgB,IAAA,EAAM,UAAA,EAAY,SAAA,EAAW,UAAA,GAAa,OAAA;AAAA"}
1
+ {"version":3,"file":"signer.d.cts","names":[],"sources":["../../src/wallet/signer.ts"],"mappings":";;;;;UAIiB;;;;EAIf,cAAc;;;;EAKd,gBAAgB,QAAQ;;;;EAKxB,iBAAiB,QAAQ;;;;;EAMzB,SAAS,MAAM,aAAa,QAAQ;;;;;;EAOpC,gBAAgB,MAAM,YAAY,WAAW,aAAa"}
@@ -1 +1 @@
1
- {"version":3,"file":"signer.d.mts","names":[],"sources":["../../src/wallet/signer.ts"],"mappings":";;AAIA;;;UAAiB,MAAA;EASS;;;EALxB,UAAA,IAAc,OAAA;EAgBC;;;EAXf,YAAA,IAAgB,OAAA,CAAQ,UAAA;EAkBqB;;;EAb7C,aAAA,IAAiB,OAAA,CAAQ,UAAA;EAVzB;;;;EAgBA,QAAA,CAAS,IAAA,EAAM,UAAA,GAAa,OAAA,CAAQ,UAAA;EANpC;;;;;EAaA,eAAA,CAAgB,IAAA,EAAM,UAAA,EAAY,SAAA,EAAW,UAAA,GAAa,OAAA;AAAA"}
1
+ {"version":3,"file":"signer.d.mts","names":[],"sources":["../../src/wallet/signer.ts"],"mappings":";;;;;UAIiB;;;;EAIf,cAAc;;;;EAKd,gBAAgB,QAAQ;;;;EAKxB,iBAAiB,QAAQ;;;;;EAMzB,SAAS,MAAM,aAAa,QAAQ;;;;;;EAOpC,gBAAgB,MAAM,YAAY,WAAW,aAAa"}
@@ -1,2 +1,3 @@
1
- require("./sign.cjs");
1
+ const require_sign = require("./sign.cjs");
2
2
  require("./wallet.cjs");
3
+ exports.Secp256k1PubKeyType = require_sign.Secp256k1PubKeyType;
@@ -1,2 +1,3 @@
1
1
  import { Secp256k1PubKeyType, TxSignPayload } from "./sign.cjs";
2
- import { AccountWalletOption, CreateWalletOptions } from "./wallet.cjs";
2
+ import { AccountWalletOption, CreateWalletOptions } from "./wallet.cjs";
3
+ export { AccountWalletOption, CreateWalletOptions, Secp256k1PubKeyType, TxSignPayload };
@@ -1,2 +1,3 @@
1
1
  import { Secp256k1PubKeyType, TxSignPayload } from "./sign.mjs";
2
- import { AccountWalletOption, CreateWalletOptions } from "./wallet.mjs";
2
+ import { AccountWalletOption, CreateWalletOptions } from "./wallet.mjs";
3
+ export { AccountWalletOption, CreateWalletOptions, Secp256k1PubKeyType, TxSignPayload };
@@ -1,3 +1,3 @@
1
- import "./sign.mjs";
1
+ import { Secp256k1PubKeyType } from "./sign.mjs";
2
2
  import "./wallet.mjs";
3
- export {};
3
+ export { Secp256k1PubKeyType };
@@ -1 +1 @@
1
- {"version":3,"file":"sign.d.cts","names":[],"sources":["../../../src/wallet/types/sign.ts"],"mappings":";;AAIA;;;UAAiB,aAAA;EAEf,QAAA;EAGA,cAAA;EAGA,QAAA;EAEA,GAAA;IAGE,OAAA;IAEA,UAAA;EAAA;EASF,IAAA;EAEA,IAAA;AAAA;AAAA,cAGW,mBAAA"}
1
+ {"version":3,"file":"sign.d.cts","names":[],"sources":["../../../src/wallet/types/sign.ts"],"mappings":";;;;;UAIiB;EAEf;EAGA;EAGA;EAEA;IAGE;IAEA;;EASF;EAEA;;cAGW"}
@@ -1 +1 @@
1
- {"version":3,"file":"sign.d.mts","names":[],"sources":["../../../src/wallet/types/sign.ts"],"mappings":";;AAIA;;;UAAiB,aAAA;EAEf,QAAA;EAGA,cAAA;EAGA,QAAA;EAEA,GAAA;IAGE,OAAA;IAEA,UAAA;EAAA;EASF,IAAA;EAEA,IAAA;AAAA;AAAA,cAGW,mBAAA"}
1
+ {"version":3,"file":"sign.d.mts","names":[],"sources":["../../../src/wallet/types/sign.ts"],"mappings":";;;;;UAIiB;EAEf;EAGA;EAGA;EAEA;IAGE;IAEA;;EASF;EAEA;;cAGW"}
@@ -1 +1 @@
1
- {"version":3,"file":"wallet.d.cts","names":[],"sources":["../../../src/wallet/types/wallet.ts"],"mappings":";UAAiB,mBAAA;EAEf,aAAA;EAEA,YAAA;AAAA;AAAA,KAGU,mBAAA,GAAsB,IAAA,CAAK,mBAAA"}
1
+ {"version":3,"file":"wallet.d.cts","names":[],"sources":["../../../src/wallet/types/wallet.ts"],"mappings":";UAAiB;EAEf;EAEA;;KAGU,sBAAsB,KAAK"}
@@ -1 +1 @@
1
- {"version":3,"file":"wallet.d.mts","names":[],"sources":["../../../src/wallet/types/wallet.ts"],"mappings":";UAAiB,mBAAA;EAEf,aAAA;EAEA,YAAA;AAAA;AAAA,KAGU,mBAAA,GAAsB,IAAA,CAAK,mBAAA"}
1
+ {"version":3,"file":"wallet.d.mts","names":[],"sources":["../../../src/wallet/types/wallet.ts"],"mappings":";UAAiB;EAEf;EAEA;;KAGU,sBAAsB,KAAK"}
@@ -1 +1,8 @@
1
- require("./utility.cjs");
1
+ const require_utility = require("./utility.cjs");
2
+ exports.defaultAddressPrefix = require_utility.defaultAddressPrefix;
3
+ exports.encodeCharacterSet = require_utility.encodeCharacterSet;
4
+ exports.generateEntropy = require_utility.generateEntropy;
5
+ exports.generateHDPath = require_utility.generateHDPath;
6
+ exports.generateKeyPair = require_utility.generateKeyPair;
7
+ exports.sortedJsonStringify = require_utility.sortedJsonStringify;
8
+ exports.stringToUTF8 = require_utility.stringToUTF8;
@@ -1 +1,2 @@
1
- import { defaultAddressPrefix, encodeCharacterSet, generateEntropy, generateHDPath, generateKeyPair, sortedJsonStringify, stringToUTF8 } from "./utility.cjs";
1
+ import { defaultAddressPrefix, encodeCharacterSet, generateEntropy, generateHDPath, generateKeyPair, sortedJsonStringify, stringToUTF8 } from "./utility.cjs";
2
+ export { defaultAddressPrefix, encodeCharacterSet, generateEntropy, generateHDPath, generateKeyPair, sortedJsonStringify, stringToUTF8 };
@@ -1 +1,2 @@
1
- import { defaultAddressPrefix, encodeCharacterSet, generateEntropy, generateHDPath, generateKeyPair, sortedJsonStringify, stringToUTF8 } from "./utility.mjs";
1
+ import { defaultAddressPrefix, encodeCharacterSet, generateEntropy, generateHDPath, generateKeyPair, sortedJsonStringify, stringToUTF8 } from "./utility.mjs";
2
+ export { defaultAddressPrefix, encodeCharacterSet, generateEntropy, generateHDPath, generateKeyPair, sortedJsonStringify, stringToUTF8 };
@@ -1,2 +1,2 @@
1
- import "./utility.mjs";
2
- export {};
1
+ import { defaultAddressPrefix, encodeCharacterSet, generateEntropy, generateHDPath, generateKeyPair, sortedJsonStringify, stringToUTF8 } from "./utility.mjs";
2
+ export { defaultAddressPrefix, encodeCharacterSet, generateEntropy, generateHDPath, generateKeyPair, sortedJsonStringify, stringToUTF8 };
@@ -1,7 +1,7 @@
1
1
  const require_runtime = require("../../_virtual/_rolldown/runtime.cjs");
2
2
  let _cosmjs_crypto = require("@cosmjs/crypto");
3
3
  let crypto = require("crypto");
4
- crypto = require_runtime.__toESM(crypto);
4
+ crypto = require_runtime.__toESM(crypto, 1);
5
5
  //#region src/wallet/utility/utility.ts
6
6
  /**
7
7
  * Generates the HD path, for the specified index, in the form 'm/44'/118'/0'/0/i',
@@ -1 +1 @@
1
- {"version":3,"file":"utility.cjs","names":["Slip10RawIndex","Bip39","EnglishMnemonic","Slip10","Slip10Curve","Secp256k1"],"sources":["../../../src/wallet/utility/utility.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport {\n Bip39,\n EnglishMnemonic,\n HdPath,\n Secp256k1,\n Slip10,\n Slip10Curve,\n Slip10RawIndex,\n} from \"@cosmjs/crypto\";\nimport crypto from \"crypto\";\n\n/**\n * Generates the HD path, for the specified index, in the form 'm/44'/118'/0'/0/i',\n * where 'i' is the account index\n * @param {number} [index=0] the account index\n */\nexport const generateHDPath = (index?: number): HdPath => {\n return [Slip10RawIndex.hardened(44), Slip10RawIndex.hardened(118), Slip10RawIndex.hardened(0), Slip10RawIndex.normal(0), Slip10RawIndex.normal(index ? index : 0)];\n};\n\n/**\n * Generates random entropy of the specified size (in B)\n * @param {number} [size=32] the entropy size in bytes\n */\nexport const generateEntropy = (size?: number): Uint8Array => {\n const array = new Uint8Array(size ? size : 32);\n\n // Generate random data\n crypto.randomFillSync(array);\n\n return array;\n};\n\ninterface keyPair {\n privateKey: Uint8Array\n publicKey: Uint8Array\n}\n\n/**\n * Generates a new Secp256k1 key-pair using\n * the provided English mnemonic and account index\n * @param {string} mnemonic the English mnemonic\n * @param {number} [accountIndex=0] the account index\n */\nexport const generateKeyPair = async (\n mnemonic: string,\n accountIndex?: number,\n): Promise<keyPair> => {\n // Generate the seed\n const seed = await Bip39.mnemonicToSeed(new EnglishMnemonic(mnemonic));\n\n // Derive the private key\n const {\n privkey: privateKey,\n } = Slip10.derivePath(\n Slip10Curve.Secp256k1,\n seed,\n generateHDPath(accountIndex),\n );\n\n // Derive the public key\n const {\n pubkey: publicKey,\n } = await Secp256k1.makeKeypair(privateKey);\n\n return {\n publicKey: publicKey,\n privateKey: privateKey,\n };\n};\n\n// Address prefix for TM2 networks\nexport const defaultAddressPrefix = \"g\";\n\n/**\n * Encodes a string into a Uint8Array\n * @param {string} str the string to be encoded\n */\nexport const stringToUTF8 = (str: string): Uint8Array => {\n return new TextEncoder().encode(str);\n};\n\n/**\n * Escapes <,>,& in string.\n * Golang's json marshaller escapes <,>,& by default.\n * https://cs.opensource.google/go/go/+/refs/tags/go1.20.6:src/encoding/json/encode.go;l=46-53\n */\nexport function encodeCharacterSet(data: string) {\n return data\n .replace(/</g, \"\\\\u003c\")\n .replace(/>/g, \"\\\\u003e\")\n .replace(/&/g, \"\\\\u0026\");\n}\n\nfunction sortedObject(obj: any): any {\n if (typeof obj !== \"object\" || obj === null) {\n return obj;\n }\n if (Array.isArray(obj)) {\n return obj.map(sortedObject);\n }\n const sortedKeys = Object.keys(obj).sort();\n const result: Record<string, any> = {\n };\n // NOTE: Use forEach instead of reduce for performance with large objects eg Wasm code\n sortedKeys.forEach((key) => {\n result[key] = sortedObject(obj[key]);\n });\n return result;\n}\n\n/** Returns a JSON string with objects sorted by key */\n\nexport function sortedJsonStringify(obj: any): string {\n return JSON.stringify(sortedObject(obj));\n}\n"],"mappings":";;;;;;;;;;AAiBA,MAAa,kBAAkB,UAA2B;AACxD,QAAO;EAACA,eAAAA,eAAe,SAAS,GAAG;EAAEA,eAAAA,eAAe,SAAS,IAAI;EAAEA,eAAAA,eAAe,SAAS,EAAE;EAAEA,eAAAA,eAAe,OAAO,EAAE;EAAEA,eAAAA,eAAe,OAAO,QAAQ,QAAQ,EAAE;EAAC;;;;;;AAOpK,MAAa,mBAAmB,SAA8B;CAC5D,MAAM,QAAQ,IAAI,WAAW,OAAO,OAAO,GAAG;AAG9C,QAAA,QAAO,eAAe,MAAM;AAE5B,QAAO;;;;;;;;AAcT,MAAa,kBAAkB,OAC7B,UACA,iBACqB;CAErB,MAAM,OAAO,MAAMC,eAAAA,MAAM,eAAe,IAAIC,eAAAA,gBAAgB,SAAS,CAAC;CAGtE,MAAM,EACJ,SAAS,eACPC,eAAAA,OAAO,WACTC,eAAAA,YAAY,WACZ,MACA,eAAe,aAAa,CAC7B;CAGD,MAAM,EACJ,QAAQ,cACN,MAAMC,eAAAA,UAAU,YAAY,WAAW;AAE3C,QAAO;EACM;EACC;EACb;;AAIH,MAAa,uBAAuB;;;;;AAMpC,MAAa,gBAAgB,QAA4B;AACvD,QAAO,IAAI,aAAa,CAAC,OAAO,IAAI;;;;;;;AAQtC,SAAgB,mBAAmB,MAAc;AAC/C,QAAO,KACJ,QAAQ,MAAM,UAAU,CACxB,QAAQ,MAAM,UAAU,CACxB,QAAQ,MAAM,UAAU;;AAG7B,SAAS,aAAa,KAAe;AACnC,KAAI,OAAO,QAAQ,YAAY,QAAQ,KACrC,QAAO;AAET,KAAI,MAAM,QAAQ,IAAI,CACpB,QAAO,IAAI,IAAI,aAAa;CAE9B,MAAM,aAAa,OAAO,KAAK,IAAI,CAAC,MAAM;CAC1C,MAAM,SAA8B,EACnC;AAED,YAAW,SAAS,QAAQ;AAC1B,SAAO,OAAO,aAAa,IAAI,KAAK;GACpC;AACF,QAAO;;;AAKT,SAAgB,oBAAoB,KAAkB;AACpD,QAAO,KAAK,UAAU,aAAa,IAAI,CAAC"}
1
+ {"version":3,"file":"utility.cjs","names":["Slip10RawIndex","Bip39","EnglishMnemonic","Slip10","Slip10Curve","Secp256k1"],"sources":["../../../src/wallet/utility/utility.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport {\n Bip39,\n EnglishMnemonic,\n HdPath,\n Secp256k1,\n Slip10,\n Slip10Curve,\n Slip10RawIndex,\n} from \"@cosmjs/crypto\";\nimport crypto from \"crypto\";\n\n/**\n * Generates the HD path, for the specified index, in the form 'm/44'/118'/0'/0/i',\n * where 'i' is the account index\n * @param {number} [index=0] the account index\n */\nexport const generateHDPath = (index?: number): HdPath => {\n return [Slip10RawIndex.hardened(44), Slip10RawIndex.hardened(118), Slip10RawIndex.hardened(0), Slip10RawIndex.normal(0), Slip10RawIndex.normal(index ? index : 0)];\n};\n\n/**\n * Generates random entropy of the specified size (in B)\n * @param {number} [size=32] the entropy size in bytes\n */\nexport const generateEntropy = (size?: number): Uint8Array => {\n const array = new Uint8Array(size ? size : 32);\n\n // Generate random data\n crypto.randomFillSync(array);\n\n return array;\n};\n\ninterface keyPair {\n privateKey: Uint8Array\n publicKey: Uint8Array\n}\n\n/**\n * Generates a new Secp256k1 key-pair using\n * the provided English mnemonic and account index\n * @param {string} mnemonic the English mnemonic\n * @param {number} [accountIndex=0] the account index\n */\nexport const generateKeyPair = async (\n mnemonic: string,\n accountIndex?: number,\n): Promise<keyPair> => {\n // Generate the seed\n const seed = await Bip39.mnemonicToSeed(new EnglishMnemonic(mnemonic));\n\n // Derive the private key\n const {\n privkey: privateKey,\n } = Slip10.derivePath(\n Slip10Curve.Secp256k1,\n seed,\n generateHDPath(accountIndex),\n );\n\n // Derive the public key\n const {\n pubkey: publicKey,\n } = await Secp256k1.makeKeypair(privateKey);\n\n return {\n publicKey: publicKey,\n privateKey: privateKey,\n };\n};\n\n// Address prefix for TM2 networks\nexport const defaultAddressPrefix = \"g\";\n\n/**\n * Encodes a string into a Uint8Array\n * @param {string} str the string to be encoded\n */\nexport const stringToUTF8 = (str: string): Uint8Array => {\n return new TextEncoder().encode(str);\n};\n\n/**\n * Escapes <,>,& in string.\n * Golang's json marshaller escapes <,>,& by default.\n * https://cs.opensource.google/go/go/+/refs/tags/go1.20.6:src/encoding/json/encode.go;l=46-53\n */\nexport function encodeCharacterSet(data: string) {\n return data\n .replace(/</g, \"\\\\u003c\")\n .replace(/>/g, \"\\\\u003e\")\n .replace(/&/g, \"\\\\u0026\");\n}\n\nfunction sortedObject(obj: any): any {\n if (typeof obj !== \"object\" || obj === null) {\n return obj;\n }\n if (Array.isArray(obj)) {\n return obj.map(sortedObject);\n }\n const sortedKeys = Object.keys(obj).sort();\n const result: Record<string, any> = {\n };\n // NOTE: Use forEach instead of reduce for performance with large objects eg Wasm code\n sortedKeys.forEach((key) => {\n result[key] = sortedObject(obj[key]);\n });\n return result;\n}\n\n/** Returns a JSON string with objects sorted by key */\n\nexport function sortedJsonStringify(obj: any): string {\n return JSON.stringify(sortedObject(obj));\n}\n"],"mappings":";;;;;;;;;;AAiBA,MAAa,kBAAkB,UAA2B;CACxD,OAAO;EAACA,eAAAA,eAAe,SAAS,EAAE;EAAGA,eAAAA,eAAe,SAAS,GAAG;EAAGA,eAAAA,eAAe,SAAS,CAAC;EAAGA,eAAAA,eAAe,OAAO,CAAC;EAAGA,eAAAA,eAAe,OAAO,QAAQ,QAAQ,CAAC;CAAC;AACnK;;;;;AAMA,MAAa,mBAAmB,SAA8B;CAC5D,MAAM,QAAQ,IAAI,WAAW,OAAO,OAAO,EAAE;CAG7C,OAAA,QAAO,eAAe,KAAK;CAE3B,OAAO;AACT;;;;;;;AAaA,MAAa,kBAAkB,OAC7B,UACA,iBACqB;CAErB,MAAM,OAAO,MAAMC,eAAAA,MAAM,eAAe,IAAIC,eAAAA,gBAAgB,QAAQ,CAAC;CAGrE,MAAM,EACJ,SAAS,eACPC,eAAAA,OAAO,WACTC,eAAAA,YAAY,WACZ,MACA,eAAe,YAAY,CAC7B;CAGA,MAAM,EACJ,QAAQ,cACN,MAAMC,eAAAA,UAAU,YAAY,UAAU;CAE1C,OAAO;EACM;EACC;CACd;AACF;AAGA,MAAa,uBAAuB;;;;;AAMpC,MAAa,gBAAgB,QAA4B;CACvD,OAAO,IAAI,YAAY,CAAC,CAAC,OAAO,GAAG;AACrC;;;;;;AAOA,SAAgB,mBAAmB,MAAc;CAC/C,OAAO,KACJ,QAAQ,MAAM,SAAS,CAAC,CACxB,QAAQ,MAAM,SAAS,CAAC,CACxB,QAAQ,MAAM,SAAS;AAC5B;AAEA,SAAS,aAAa,KAAe;CACnC,IAAI,OAAO,QAAQ,YAAY,QAAQ,MACrC,OAAO;CAET,IAAI,MAAM,QAAQ,GAAG,GACnB,OAAO,IAAI,IAAI,YAAY;CAE7B,MAAM,aAAa,OAAO,KAAK,GAAG,CAAC,CAAC,KAAK;CACzC,MAAM,SAA8B,CACpC;CAEA,WAAW,SAAS,QAAQ;EAC1B,OAAO,OAAO,aAAa,IAAI,IAAI;CACrC,CAAC;CACD,OAAO;AACT;;AAIA,SAAgB,oBAAoB,KAAkB;CACpD,OAAO,KAAK,UAAU,aAAa,GAAG,CAAC;AACzC"}
@@ -1,5 +1,4 @@
1
1
  import { HdPath } from "@cosmjs/crypto";
2
-
3
2
  //#region src/wallet/utility/utility.d.ts
4
3
  /**
5
4
  * Generates the HD path, for the specified index, in the form 'm/44'/118'/0'/0/i',
@@ -1 +1 @@
1
- {"version":3,"file":"utility.d.cts","names":[],"sources":["../../../src/wallet/utility/utility.ts"],"mappings":";;;;;AAiBA;;;cAAa,cAAA,GAAkB,KAAA,cAAiB,MAAA;;AAQhD;;;cAAa,eAAA,GAAmB,IAAA,cAAgB,UAAA;AAAA,UAStC,OAAA;EACR,UAAA,EAAY,UAAA;EACZ,SAAA,EAAW,UAAA;AAAA;;;;;;;cASA,eAAA,GACX,QAAA,UACA,YAAA,cACC,OAAA,CAAQ,OAAA;AAAA,cAyBE,oBAAA;;;;;cAMA,YAAA,GAAgB,GAAA,aAAc,UAAA;;;;;AAN3C;iBAegB,kBAAA,CAAmB,IAAA;;iBA0BnB,mBAAA,CAAoB,GAAA"}
1
+ {"version":3,"file":"utility.d.cts","names":[],"sources":["../../../src/wallet/utility/utility.ts"],"mappings":";;;;;;;cAiBa,iBAAkB,mBAAiB;;;;;cAQnC,kBAAmB,kBAAgB;UAStC;EACR,YAAY;EACZ,WAAW;;;;;;;;cASA,kBACX,kBACA,0BACC,QAAQ;cAyBE;;;;;cAMA,eAAgB,gBAAc;;;;;;iBAS3B,mBAAmB;;iBA0BnB,oBAAoB"}
@@ -1,5 +1,4 @@
1
1
  import { HdPath } from "@cosmjs/crypto";
2
-
3
2
  //#region src/wallet/utility/utility.d.ts
4
3
  /**
5
4
  * Generates the HD path, for the specified index, in the form 'm/44'/118'/0'/0/i',
@@ -1 +1 @@
1
- {"version":3,"file":"utility.d.mts","names":[],"sources":["../../../src/wallet/utility/utility.ts"],"mappings":";;;;;AAiBA;;;cAAa,cAAA,GAAkB,KAAA,cAAiB,MAAA;;AAQhD;;;cAAa,eAAA,GAAmB,IAAA,cAAgB,UAAA;AAAA,UAStC,OAAA;EACR,UAAA,EAAY,UAAA;EACZ,SAAA,EAAW,UAAA;AAAA;;;;;;;cASA,eAAA,GACX,QAAA,UACA,YAAA,cACC,OAAA,CAAQ,OAAA;AAAA,cAyBE,oBAAA;;;;;cAMA,YAAA,GAAgB,GAAA,aAAc,UAAA;;;;;AAN3C;iBAegB,kBAAA,CAAmB,IAAA;;iBA0BnB,mBAAA,CAAoB,GAAA"}
1
+ {"version":3,"file":"utility.d.mts","names":[],"sources":["../../../src/wallet/utility/utility.ts"],"mappings":";;;;;;;cAiBa,iBAAkB,mBAAiB;;;;;cAQnC,kBAAmB,kBAAgB;UAStC;EACR,YAAY;EACZ,WAAW;;;;;;;;cASA,kBACX,kBACA,0BACC,QAAQ;cAyBE;;;;;cAMA,eAAgB,gBAAc;;;;;;iBAS3B,mBAAmB;;iBA0BnB,oBAAoB"}
@@ -1 +1 @@
1
- {"version":3,"file":"utility.mjs","names":[],"sources":["../../../src/wallet/utility/utility.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport {\n Bip39,\n EnglishMnemonic,\n HdPath,\n Secp256k1,\n Slip10,\n Slip10Curve,\n Slip10RawIndex,\n} from \"@cosmjs/crypto\";\nimport crypto from \"crypto\";\n\n/**\n * Generates the HD path, for the specified index, in the form 'm/44'/118'/0'/0/i',\n * where 'i' is the account index\n * @param {number} [index=0] the account index\n */\nexport const generateHDPath = (index?: number): HdPath => {\n return [Slip10RawIndex.hardened(44), Slip10RawIndex.hardened(118), Slip10RawIndex.hardened(0), Slip10RawIndex.normal(0), Slip10RawIndex.normal(index ? index : 0)];\n};\n\n/**\n * Generates random entropy of the specified size (in B)\n * @param {number} [size=32] the entropy size in bytes\n */\nexport const generateEntropy = (size?: number): Uint8Array => {\n const array = new Uint8Array(size ? size : 32);\n\n // Generate random data\n crypto.randomFillSync(array);\n\n return array;\n};\n\ninterface keyPair {\n privateKey: Uint8Array\n publicKey: Uint8Array\n}\n\n/**\n * Generates a new Secp256k1 key-pair using\n * the provided English mnemonic and account index\n * @param {string} mnemonic the English mnemonic\n * @param {number} [accountIndex=0] the account index\n */\nexport const generateKeyPair = async (\n mnemonic: string,\n accountIndex?: number,\n): Promise<keyPair> => {\n // Generate the seed\n const seed = await Bip39.mnemonicToSeed(new EnglishMnemonic(mnemonic));\n\n // Derive the private key\n const {\n privkey: privateKey,\n } = Slip10.derivePath(\n Slip10Curve.Secp256k1,\n seed,\n generateHDPath(accountIndex),\n );\n\n // Derive the public key\n const {\n pubkey: publicKey,\n } = await Secp256k1.makeKeypair(privateKey);\n\n return {\n publicKey: publicKey,\n privateKey: privateKey,\n };\n};\n\n// Address prefix for TM2 networks\nexport const defaultAddressPrefix = \"g\";\n\n/**\n * Encodes a string into a Uint8Array\n * @param {string} str the string to be encoded\n */\nexport const stringToUTF8 = (str: string): Uint8Array => {\n return new TextEncoder().encode(str);\n};\n\n/**\n * Escapes <,>,& in string.\n * Golang's json marshaller escapes <,>,& by default.\n * https://cs.opensource.google/go/go/+/refs/tags/go1.20.6:src/encoding/json/encode.go;l=46-53\n */\nexport function encodeCharacterSet(data: string) {\n return data\n .replace(/</g, \"\\\\u003c\")\n .replace(/>/g, \"\\\\u003e\")\n .replace(/&/g, \"\\\\u0026\");\n}\n\nfunction sortedObject(obj: any): any {\n if (typeof obj !== \"object\" || obj === null) {\n return obj;\n }\n if (Array.isArray(obj)) {\n return obj.map(sortedObject);\n }\n const sortedKeys = Object.keys(obj).sort();\n const result: Record<string, any> = {\n };\n // NOTE: Use forEach instead of reduce for performance with large objects eg Wasm code\n sortedKeys.forEach((key) => {\n result[key] = sortedObject(obj[key]);\n });\n return result;\n}\n\n/** Returns a JSON string with objects sorted by key */\n\nexport function sortedJsonStringify(obj: any): string {\n return JSON.stringify(sortedObject(obj));\n}\n"],"mappings":";;;;;;;;AAiBA,MAAa,kBAAkB,UAA2B;AACxD,QAAO;EAAC,eAAe,SAAS,GAAG;EAAE,eAAe,SAAS,IAAI;EAAE,eAAe,SAAS,EAAE;EAAE,eAAe,OAAO,EAAE;EAAE,eAAe,OAAO,QAAQ,QAAQ,EAAE;EAAC;;;;;;AAOpK,MAAa,mBAAmB,SAA8B;CAC5D,MAAM,QAAQ,IAAI,WAAW,OAAO,OAAO,GAAG;AAG9C,QAAO,eAAe,MAAM;AAE5B,QAAO;;;;;;;;AAcT,MAAa,kBAAkB,OAC7B,UACA,iBACqB;CAErB,MAAM,OAAO,MAAM,MAAM,eAAe,IAAI,gBAAgB,SAAS,CAAC;CAGtE,MAAM,EACJ,SAAS,eACP,OAAO,WACT,YAAY,WACZ,MACA,eAAe,aAAa,CAC7B;CAGD,MAAM,EACJ,QAAQ,cACN,MAAM,UAAU,YAAY,WAAW;AAE3C,QAAO;EACM;EACC;EACb;;AAIH,MAAa,uBAAuB;;;;;AAMpC,MAAa,gBAAgB,QAA4B;AACvD,QAAO,IAAI,aAAa,CAAC,OAAO,IAAI;;;;;;;AAQtC,SAAgB,mBAAmB,MAAc;AAC/C,QAAO,KACJ,QAAQ,MAAM,UAAU,CACxB,QAAQ,MAAM,UAAU,CACxB,QAAQ,MAAM,UAAU;;AAG7B,SAAS,aAAa,KAAe;AACnC,KAAI,OAAO,QAAQ,YAAY,QAAQ,KACrC,QAAO;AAET,KAAI,MAAM,QAAQ,IAAI,CACpB,QAAO,IAAI,IAAI,aAAa;CAE9B,MAAM,aAAa,OAAO,KAAK,IAAI,CAAC,MAAM;CAC1C,MAAM,SAA8B,EACnC;AAED,YAAW,SAAS,QAAQ;AAC1B,SAAO,OAAO,aAAa,IAAI,KAAK;GACpC;AACF,QAAO;;;AAKT,SAAgB,oBAAoB,KAAkB;AACpD,QAAO,KAAK,UAAU,aAAa,IAAI,CAAC"}
1
+ {"version":3,"file":"utility.mjs","names":[],"sources":["../../../src/wallet/utility/utility.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport {\n Bip39,\n EnglishMnemonic,\n HdPath,\n Secp256k1,\n Slip10,\n Slip10Curve,\n Slip10RawIndex,\n} from \"@cosmjs/crypto\";\nimport crypto from \"crypto\";\n\n/**\n * Generates the HD path, for the specified index, in the form 'm/44'/118'/0'/0/i',\n * where 'i' is the account index\n * @param {number} [index=0] the account index\n */\nexport const generateHDPath = (index?: number): HdPath => {\n return [Slip10RawIndex.hardened(44), Slip10RawIndex.hardened(118), Slip10RawIndex.hardened(0), Slip10RawIndex.normal(0), Slip10RawIndex.normal(index ? index : 0)];\n};\n\n/**\n * Generates random entropy of the specified size (in B)\n * @param {number} [size=32] the entropy size in bytes\n */\nexport const generateEntropy = (size?: number): Uint8Array => {\n const array = new Uint8Array(size ? size : 32);\n\n // Generate random data\n crypto.randomFillSync(array);\n\n return array;\n};\n\ninterface keyPair {\n privateKey: Uint8Array\n publicKey: Uint8Array\n}\n\n/**\n * Generates a new Secp256k1 key-pair using\n * the provided English mnemonic and account index\n * @param {string} mnemonic the English mnemonic\n * @param {number} [accountIndex=0] the account index\n */\nexport const generateKeyPair = async (\n mnemonic: string,\n accountIndex?: number,\n): Promise<keyPair> => {\n // Generate the seed\n const seed = await Bip39.mnemonicToSeed(new EnglishMnemonic(mnemonic));\n\n // Derive the private key\n const {\n privkey: privateKey,\n } = Slip10.derivePath(\n Slip10Curve.Secp256k1,\n seed,\n generateHDPath(accountIndex),\n );\n\n // Derive the public key\n const {\n pubkey: publicKey,\n } = await Secp256k1.makeKeypair(privateKey);\n\n return {\n publicKey: publicKey,\n privateKey: privateKey,\n };\n};\n\n// Address prefix for TM2 networks\nexport const defaultAddressPrefix = \"g\";\n\n/**\n * Encodes a string into a Uint8Array\n * @param {string} str the string to be encoded\n */\nexport const stringToUTF8 = (str: string): Uint8Array => {\n return new TextEncoder().encode(str);\n};\n\n/**\n * Escapes <,>,& in string.\n * Golang's json marshaller escapes <,>,& by default.\n * https://cs.opensource.google/go/go/+/refs/tags/go1.20.6:src/encoding/json/encode.go;l=46-53\n */\nexport function encodeCharacterSet(data: string) {\n return data\n .replace(/</g, \"\\\\u003c\")\n .replace(/>/g, \"\\\\u003e\")\n .replace(/&/g, \"\\\\u0026\");\n}\n\nfunction sortedObject(obj: any): any {\n if (typeof obj !== \"object\" || obj === null) {\n return obj;\n }\n if (Array.isArray(obj)) {\n return obj.map(sortedObject);\n }\n const sortedKeys = Object.keys(obj).sort();\n const result: Record<string, any> = {\n };\n // NOTE: Use forEach instead of reduce for performance with large objects eg Wasm code\n sortedKeys.forEach((key) => {\n result[key] = sortedObject(obj[key]);\n });\n return result;\n}\n\n/** Returns a JSON string with objects sorted by key */\n\nexport function sortedJsonStringify(obj: any): string {\n return JSON.stringify(sortedObject(obj));\n}\n"],"mappings":";;;;;;;;AAiBA,MAAa,kBAAkB,UAA2B;CACxD,OAAO;EAAC,eAAe,SAAS,EAAE;EAAG,eAAe,SAAS,GAAG;EAAG,eAAe,SAAS,CAAC;EAAG,eAAe,OAAO,CAAC;EAAG,eAAe,OAAO,QAAQ,QAAQ,CAAC;CAAC;AACnK;;;;;AAMA,MAAa,mBAAmB,SAA8B;CAC5D,MAAM,QAAQ,IAAI,WAAW,OAAO,OAAO,EAAE;CAG7C,OAAO,eAAe,KAAK;CAE3B,OAAO;AACT;;;;;;;AAaA,MAAa,kBAAkB,OAC7B,UACA,iBACqB;CAErB,MAAM,OAAO,MAAM,MAAM,eAAe,IAAI,gBAAgB,QAAQ,CAAC;CAGrE,MAAM,EACJ,SAAS,eACP,OAAO,WACT,YAAY,WACZ,MACA,eAAe,YAAY,CAC7B;CAGA,MAAM,EACJ,QAAQ,cACN,MAAM,UAAU,YAAY,UAAU;CAE1C,OAAO;EACM;EACC;CACd;AACF;AAGA,MAAa,uBAAuB;;;;;AAMpC,MAAa,gBAAgB,QAA4B;CACvD,OAAO,IAAI,YAAY,CAAC,CAAC,OAAO,GAAG;AACrC;;;;;;AAOA,SAAgB,mBAAmB,MAAc;CAC/C,OAAO,KACJ,QAAQ,MAAM,SAAS,CAAC,CACxB,QAAQ,MAAM,SAAS,CAAC,CACxB,QAAQ,MAAM,SAAS;AAC5B;AAEA,SAAS,aAAa,KAAe;CACnC,IAAI,OAAO,QAAQ,YAAY,QAAQ,MACrC,OAAO;CAET,IAAI,MAAM,QAAQ,GAAG,GACnB,OAAO,IAAI,IAAI,YAAY;CAE7B,MAAM,aAAa,OAAO,KAAK,GAAG,CAAC,CAAC,KAAK;CACzC,MAAM,SAA8B,CACpC;CAEA,WAAW,SAAS,QAAQ;EAC1B,OAAO,OAAO,aAAa,IAAI,IAAI;CACrC,CAAC;CACD,OAAO;AACT;;AAIA,SAAgB,oBAAoB,KAAkB;CACpD,OAAO,KAAK,UAAU,aAAa,GAAG,CAAC;AACzC"}
@@ -1,7 +1,6 @@
1
- require("../_virtual/_rolldown/runtime.cjs");
2
1
  const require_tx = require("../proto/tm2/tx.cjs");
3
2
  require("../proto/index.cjs");
4
- const require_defineProperty = require("../_virtual/_@oxc-project_runtime@0.122.0/helpers/defineProperty.cjs");
3
+ const require_defineProperty = require("../_virtual/_@oxc-project_runtime@0.143.0/helpers/esm/defineProperty.cjs");
5
4
  const require_requests_utility = require("../provider/utility/requests.utility.cjs");
6
5
  require("../provider/index.cjs");
7
6
  const require_utility = require("./utility/utility.cjs");
@@ -21,7 +20,7 @@ var _Wallet;
21
20
  */
22
21
  var Wallet = class {
23
22
  constructor() {
24
- require_defineProperty._defineProperty(
23
+ require_defineProperty.default(
25
24
  this,
26
25
  /**
27
26
  * Connects the wallet to the specified {@link Provider}
@@ -32,7 +31,7 @@ var Wallet = class {
32
31
  this.provider = provider;
33
32
  }
34
33
  );
35
- require_defineProperty._defineProperty(
34
+ require_defineProperty.default(
36
35
  this,
37
36
  /**
38
37
  * Fetches the address associated with the wallet
@@ -42,7 +41,7 @@ var Wallet = class {
42
41
  return this.signer.getAddress();
43
42
  }
44
43
  );
45
- require_defineProperty._defineProperty(
44
+ require_defineProperty.default(
46
45
  this,
47
46
  /**
48
47
  * Fetches the account sequence for the wallet
@@ -55,7 +54,7 @@ var Wallet = class {
55
54
  return this.provider.getAccountSequence(address, height);
56
55
  }
57
56
  );
58
- require_defineProperty._defineProperty(
57
+ require_defineProperty.default(
59
58
  this,
60
59
  /**
61
60
  * Fetches the account number for the wallet. Errors out if the
@@ -69,7 +68,7 @@ var Wallet = class {
69
68
  return this.provider.getAccountNumber(address, height);
70
69
  }
71
70
  );
72
- require_defineProperty._defineProperty(
71
+ require_defineProperty.default(
73
72
  this,
74
73
  /**
75
74
  * Fetches the account balance for the specific denomination
@@ -82,7 +81,7 @@ var Wallet = class {
82
81
  return this.provider.getBalance(address, denomination ? denomination : "ugnot");
83
82
  }
84
83
  );
85
- require_defineProperty._defineProperty(
84
+ require_defineProperty.default(
86
85
  this,
87
86
  /**
88
87
  * Fetches the current (recommended) average gas price
@@ -93,7 +92,7 @@ var Wallet = class {
93
92
  return this.provider.getGasPrice();
94
93
  }
95
94
  );
96
- require_defineProperty._defineProperty(
95
+ require_defineProperty.default(
97
96
  this,
98
97
  /**
99
98
  * Estimates the gas limit for the transaction
@@ -105,7 +104,7 @@ var Wallet = class {
105
104
  return this.provider.estimateGas(tx);
106
105
  }
107
106
  );
108
- require_defineProperty._defineProperty(
107
+ require_defineProperty.default(
109
108
  this,
110
109
  /**
111
110
  * Returns the connected provider, if any
@@ -115,7 +114,7 @@ var Wallet = class {
115
114
  return this.provider;
116
115
  }
117
116
  );
118
- require_defineProperty._defineProperty(
117
+ require_defineProperty.default(
119
118
  this,
120
119
  /**
121
120
  * Generates a transaction signature, and appends it to the transaction
@@ -165,7 +164,7 @@ var Wallet = class {
165
164
  };
166
165
  }
167
166
  );
168
- require_defineProperty._defineProperty(
167
+ require_defineProperty.default(
169
168
  this,
170
169
  /**
171
170
  * Returns the associated signer
@@ -191,30 +190,30 @@ var Wallet = class {
191
190
  }
192
191
  };
193
192
  _Wallet = Wallet;
194
- require_defineProperty._defineProperty(Wallet, "createRandom", async (options) => {
193
+ require_defineProperty.default(Wallet, "createRandom", async (options) => {
195
194
  const { publicKey, privateKey } = await require_utility.generateKeyPair(_cosmjs_crypto.Bip39.encode(require_utility.generateEntropy()).toString(), 0);
196
195
  const wallet = new _Wallet();
197
196
  wallet.signer = new require_key.KeySigner(privateKey, _cosmjs_crypto.Secp256k1.compressPubkey(publicKey), options?.addressPrefix);
198
197
  return wallet;
199
198
  });
200
- require_defineProperty._defineProperty(Wallet, "fromSigner", async (signer) => {
199
+ require_defineProperty.default(Wallet, "fromSigner", async (signer) => {
201
200
  const wallet = new _Wallet();
202
201
  wallet.signer = signer;
203
202
  return wallet;
204
203
  });
205
- require_defineProperty._defineProperty(Wallet, "fromMnemonic", async (mnemonic, options) => {
204
+ require_defineProperty.default(Wallet, "fromMnemonic", async (mnemonic, options) => {
206
205
  const { publicKey, privateKey } = await require_utility.generateKeyPair(mnemonic, options?.accountIndex);
207
206
  const wallet = new _Wallet();
208
207
  wallet.signer = new require_key.KeySigner(privateKey, _cosmjs_crypto.Secp256k1.compressPubkey(publicKey), options?.addressPrefix);
209
208
  return wallet;
210
209
  });
211
- require_defineProperty._defineProperty(Wallet, "fromPrivateKey", async (privateKey, options) => {
210
+ require_defineProperty.default(Wallet, "fromPrivateKey", async (privateKey, options) => {
212
211
  const { pubkey: publicKey } = await _cosmjs_crypto.Secp256k1.makeKeypair(privateKey);
213
212
  const wallet = new _Wallet();
214
213
  wallet.signer = new require_key.KeySigner(privateKey, _cosmjs_crypto.Secp256k1.compressPubkey(publicKey), options?.addressPrefix);
215
214
  return wallet;
216
215
  });
217
- require_defineProperty._defineProperty(Wallet, "fromLedger", (connector, options) => {
216
+ require_defineProperty.default(Wallet, "fromLedger", (connector, options) => {
218
217
  const wallet = new _Wallet();
219
218
  wallet.signer = new require_ledger.LedgerSigner(connector, options?.accountIndex ?? 0, options?.addressPrefix);
220
219
  return wallet;
@@ -1 +1 @@
1
- {"version":3,"file":"wallet.cjs","names":["stringToUTF8","encodeCharacterSet","sortedJsonStringify","Secp256k1PubKeyType","PubKeySecp256k1","uint8ArrayToBase64","Tx","generateKeyPair","Bip39","generateEntropy","Wallet","KeySigner","Secp256k1","LedgerSigner"],"sources":["../../src/wallet/wallet.ts"],"sourcesContent":["import {\n Bip39, Secp256k1,\n} from \"@cosmjs/crypto\";\nimport {\n LedgerConnector,\n} from \"@cosmjs/ledger-amino\";\n\nimport {\n Any, PubKeySecp256k1, Tx, TxSignature,\n} from \"../proto/index.js\";\nimport {\n BroadcastTransactionMap,\n Provider,\n Status,\n uint8ArrayToBase64,\n} from \"../provider/index.js\";\nimport {\n KeySigner,\n} from \"./key/index.js\";\nimport {\n LedgerSigner,\n} from \"./ledger/index.js\";\nimport {\n Signer,\n} from \"./signer.js\";\nimport {\n AccountWalletOption,\n CreateWalletOptions,\n Secp256k1PubKeyType,\n TxSignPayload,\n} from \"./types/index.js\";\nimport {\n encodeCharacterSet,\n generateEntropy,\n generateKeyPair,\n stringToUTF8,\n} from \"./utility/index.js\";\nimport {\n sortedJsonStringify,\n} from \"./utility/index.js\";\nexport interface SignTransactionOptions {\n accountNumber?: string\n sequence?: string\n}\n\n/**\n * Wallet is a single account abstraction\n * that can interact with the blockchain\n */\nexport class Wallet {\n protected declare provider: Provider;\n protected declare signer: Signer;\n\n /**\n * Connects the wallet to the specified {@link Provider}\n * @param {Provider} provider the active {@link Provider}, if any\n */\n connect = (provider: Provider) => {\n this.provider = provider;\n };\n\n // Wallet initialization //\n\n /**\n * Generates a private key-based wallet, using a random seed\n * @param {AccountWalletOption} options the account options\n */\n static createRandom = async (\n options?: AccountWalletOption,\n ): Promise<Wallet> => {\n const {\n publicKey, privateKey,\n } = await generateKeyPair(\n Bip39.encode(generateEntropy()).toString(),\n 0,\n );\n\n // Initialize the wallet\n const wallet: Wallet = new Wallet();\n wallet.signer = new KeySigner(\n privateKey,\n Secp256k1.compressPubkey(publicKey),\n options?.addressPrefix,\n );\n\n return wallet;\n };\n\n /**\n * Generates a custom signer-based wallet\n * @param {Signer} signer the custom signer implementing the Signer interface\n * @param {CreateWalletOptions} options the wallet generation options\n */\n static fromSigner = async (signer: Signer): Promise<Wallet> => {\n // Initialize the wallet\n const wallet: Wallet = new Wallet();\n wallet.signer = signer;\n\n return wallet;\n };\n\n /**\n * Generates a bip39 mnemonic-based wallet\n * @param {string} mnemonic the bip39 mnemonic\n * @param {CreateWalletOptions} options the wallet generation options\n */\n static fromMnemonic = async (\n mnemonic: string,\n options?: CreateWalletOptions,\n ): Promise<Wallet> => {\n const {\n publicKey, privateKey,\n } = await generateKeyPair(\n mnemonic,\n options?.accountIndex,\n );\n\n // Initialize the wallet\n const wallet: Wallet = new Wallet();\n wallet.signer = new KeySigner(\n privateKey,\n Secp256k1.compressPubkey(publicKey),\n options?.addressPrefix,\n );\n\n return wallet;\n };\n\n /**\n * Generates a private key-based wallet\n * @param {string} privateKey the private key\n * @param {AccountWalletOption} options the account options\n */\n static fromPrivateKey = async (\n privateKey: Uint8Array,\n options?: AccountWalletOption,\n ): Promise<Wallet> => {\n // Derive the public key\n const {\n pubkey: publicKey,\n } = await Secp256k1.makeKeypair(privateKey);\n\n // Initialize the wallet\n const wallet: Wallet = new Wallet();\n wallet.signer = new KeySigner(\n privateKey,\n Secp256k1.compressPubkey(publicKey),\n options?.addressPrefix,\n );\n\n return wallet;\n };\n\n /**\n * Creates a Ledger-based wallet\n * @param {LedgerConnector} connector the Ledger device connector\n * @param {CreateWalletOptions} options the wallet generation options\n */\n static fromLedger = (\n connector: LedgerConnector,\n options?: CreateWalletOptions,\n ): Wallet => {\n const wallet: Wallet = new Wallet();\n\n wallet.signer = new LedgerSigner(\n connector,\n options?.accountIndex ?? 0,\n options?.addressPrefix,\n );\n\n return wallet;\n };\n\n // Account manipulation //\n\n /**\n * Fetches the address associated with the wallet\n */\n getAddress = (): Promise<string> => {\n return this.signer.getAddress();\n };\n\n /**\n * Fetches the account sequence for the wallet\n * @param {number} [height=latest] the block height\n */\n getAccountSequence = async (height?: number): Promise<number> => {\n if (!this.provider) {\n throw new Error(\"provider not connected\");\n }\n\n // Get the address\n const address: string = await this.getAddress();\n\n return this.provider.getAccountSequence(address, height);\n };\n\n /**\n * Fetches the account number for the wallet. Errors out if the\n * account is not initialized\n * @param {number} [height=latest] the block height\n */\n getAccountNumber = async (height?: number): Promise<number> => {\n if (!this.provider) {\n throw new Error(\"provider not connected\");\n }\n\n // Get the address\n const address: string = await this.getAddress();\n\n return this.provider.getAccountNumber(address, height);\n };\n\n /**\n * Fetches the account balance for the specific denomination\n * @param {string} [denomination=ugnot] the fund denomination\n */\n getBalance = async (denomination?: string): Promise<number> => {\n if (!this.provider) {\n throw new Error(\"provider not connected\");\n }\n\n // Get the address\n const address: string = await this.getAddress();\n\n return this.provider.getBalance(\n address,\n denomination ? denomination : \"ugnot\",\n );\n };\n\n /**\n * Fetches the current (recommended) average gas price\n */\n getGasPrice = async (): Promise<number> => {\n if (!this.provider) {\n throw new Error(\"provider not connected\");\n }\n\n return this.provider.getGasPrice();\n };\n\n /**\n * Estimates the gas limit for the transaction\n * @param {Tx} tx the transaction that needs estimating\n */\n estimateGas = async (tx: Tx): Promise<bigint> => {\n if (!this.provider) {\n throw new Error(\"provider not connected\");\n }\n\n return this.provider.estimateGas(tx);\n };\n\n /**\n * Returns the connected provider, if any\n */\n getProvider = (): Provider => {\n return this.provider;\n };\n\n /**\n * Generates a transaction signature, and appends it to the transaction\n * @param {Tx} tx the transaction to be signed\n * @param {(messages: Any[]) => any[]} decodeTxMessages tx message decode callback\n * that should expand the concrete message fields into an object. Required because\n * the transaction sign bytes are generated using sorted JSON, which requires\n * encoded message values to be decoded for sorting\n */\n signTransaction = async (\n tx: Tx,\n decodeTxMessages: (messages: Any[]) => unknown[],\n opts?: SignTransactionOptions,\n ): Promise<Tx> => {\n if (!this.provider) {\n throw new Error(\"provider not connected\");\n }\n\n // Make sure the tx fee is initialized\n if (!tx.fee) {\n throw new Error(\"invalid transaction fee provided\");\n }\n\n // Extract the relevant chain data\n const status: Status = await this.provider.getStatus();\n const chainID: string = status.node_info.network;\n\n // Extract the relevant account data\n let accountNumber = opts?.accountNumber;\n let accountSequence = opts?.sequence;\n if (accountNumber === undefined || accountSequence === undefined) {\n const address: string = await this.getAddress();\n const account = await this.provider.getAccount(address);\n if (accountNumber === undefined) {\n accountNumber = account.BaseAccount.account_number;\n }\n if (accountSequence === undefined) {\n accountSequence = account.BaseAccount.sequence;\n }\n }\n const publicKey: Uint8Array = await this.signer.getPublicKey();\n\n // Create the signature payload\n const signPayload: TxSignPayload = {\n chain_id: chainID,\n account_number: accountNumber,\n sequence: accountSequence,\n fee: {\n gas_fee: tx.fee.gas_fee,\n gas_wanted: tx.fee.gas_wanted.toString(10),\n },\n msgs: decodeTxMessages(tx.messages), // unrolled message objects\n memo: tx.memo,\n };\n\n // The TM2 node does signature verification using\n // a sorted JSON object, so the payload needs to be sorted\n // before signing\n const signBytes: Uint8Array = stringToUTF8(\n encodeCharacterSet(sortedJsonStringify(signPayload)),\n );\n\n // The public key needs to be encoded using protobuf for Amino\n const wrappedKey: PubKeySecp256k1 = {\n key: publicKey,\n };\n\n // Generate the signature\n const txSignature: TxSignature = {\n pub_key: {\n type_url: Secp256k1PubKeyType,\n value: PubKeySecp256k1.encode(wrappedKey).finish(),\n },\n signature: await this.getSigner().signData(signBytes),\n };\n\n // Append the signature\n return {\n ...tx,\n signatures: [...tx.signatures, txSignature],\n };\n };\n\n /**\n * Encodes and sends the transaction. If the type of endpoint\n * is a broadcast commit, waits for the transaction to be committed to the chain.\n * The transaction needs to be signed beforehand.\n * Returns the transaction hash (base-64)\n * @param {Tx} tx the signed transaction\n * @param {BroadcastType} endpoint the transaction broadcast type (sync / commit)\n */\n async sendTransaction<K extends keyof BroadcastTransactionMap>(\n tx: Tx,\n endpoint: K,\n ): Promise<BroadcastTransactionMap[K][\"result\"]> {\n if (!this.provider) {\n throw new Error(\"provider not connected\");\n }\n\n // Encode the transaction to base-64\n const encodedTx: string = uint8ArrayToBase64(Tx.encode(tx).finish());\n\n // Send the encoded transaction\n return this.provider.sendTransaction(encodedTx, endpoint);\n }\n\n /**\n * Returns the associated signer\n */\n getSigner = (): Signer => {\n return this.signer;\n };\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"wallet.cjs","names":["stringToUTF8","encodeCharacterSet","sortedJsonStringify","Secp256k1PubKeyType","PubKeySecp256k1","uint8ArrayToBase64","Tx","generateKeyPair","Bip39","generateEntropy","Wallet","KeySigner","Secp256k1","LedgerSigner"],"sources":["../../src/wallet/wallet.ts"],"sourcesContent":["import {\n Bip39, Secp256k1,\n} from \"@cosmjs/crypto\";\nimport {\n LedgerConnector,\n} from \"@cosmjs/ledger-amino\";\n\nimport {\n Any, PubKeySecp256k1, Tx, TxSignature,\n} from \"../proto/index.js\";\nimport {\n BroadcastTransactionMap,\n Provider,\n Status,\n uint8ArrayToBase64,\n} from \"../provider/index.js\";\nimport {\n KeySigner,\n} from \"./key/index.js\";\nimport {\n LedgerSigner,\n} from \"./ledger/index.js\";\nimport {\n Signer,\n} from \"./signer.js\";\nimport {\n AccountWalletOption,\n CreateWalletOptions,\n Secp256k1PubKeyType,\n TxSignPayload,\n} from \"./types/index.js\";\nimport {\n encodeCharacterSet,\n generateEntropy,\n generateKeyPair,\n stringToUTF8,\n} from \"./utility/index.js\";\nimport {\n sortedJsonStringify,\n} from \"./utility/index.js\";\nexport interface SignTransactionOptions {\n accountNumber?: string\n sequence?: string\n}\n\n/**\n * Wallet is a single account abstraction\n * that can interact with the blockchain\n */\nexport class Wallet {\n protected declare provider: Provider;\n protected declare signer: Signer;\n\n /**\n * Connects the wallet to the specified {@link Provider}\n * @param {Provider} provider the active {@link Provider}, if any\n */\n connect = (provider: Provider) => {\n this.provider = provider;\n };\n\n // Wallet initialization //\n\n /**\n * Generates a private key-based wallet, using a random seed\n * @param {AccountWalletOption} options the account options\n */\n static createRandom = async (\n options?: AccountWalletOption,\n ): Promise<Wallet> => {\n const {\n publicKey, privateKey,\n } = await generateKeyPair(\n Bip39.encode(generateEntropy()).toString(),\n 0,\n );\n\n // Initialize the wallet\n const wallet: Wallet = new Wallet();\n wallet.signer = new KeySigner(\n privateKey,\n Secp256k1.compressPubkey(publicKey),\n options?.addressPrefix,\n );\n\n return wallet;\n };\n\n /**\n * Generates a custom signer-based wallet\n * @param {Signer} signer the custom signer implementing the Signer interface\n * @param {CreateWalletOptions} options the wallet generation options\n */\n static fromSigner = async (signer: Signer): Promise<Wallet> => {\n // Initialize the wallet\n const wallet: Wallet = new Wallet();\n wallet.signer = signer;\n\n return wallet;\n };\n\n /**\n * Generates a bip39 mnemonic-based wallet\n * @param {string} mnemonic the bip39 mnemonic\n * @param {CreateWalletOptions} options the wallet generation options\n */\n static fromMnemonic = async (\n mnemonic: string,\n options?: CreateWalletOptions,\n ): Promise<Wallet> => {\n const {\n publicKey, privateKey,\n } = await generateKeyPair(\n mnemonic,\n options?.accountIndex,\n );\n\n // Initialize the wallet\n const wallet: Wallet = new Wallet();\n wallet.signer = new KeySigner(\n privateKey,\n Secp256k1.compressPubkey(publicKey),\n options?.addressPrefix,\n );\n\n return wallet;\n };\n\n /**\n * Generates a private key-based wallet\n * @param {string} privateKey the private key\n * @param {AccountWalletOption} options the account options\n */\n static fromPrivateKey = async (\n privateKey: Uint8Array,\n options?: AccountWalletOption,\n ): Promise<Wallet> => {\n // Derive the public key\n const {\n pubkey: publicKey,\n } = await Secp256k1.makeKeypair(privateKey);\n\n // Initialize the wallet\n const wallet: Wallet = new Wallet();\n wallet.signer = new KeySigner(\n privateKey,\n Secp256k1.compressPubkey(publicKey),\n options?.addressPrefix,\n );\n\n return wallet;\n };\n\n /**\n * Creates a Ledger-based wallet\n * @param {LedgerConnector} connector the Ledger device connector\n * @param {CreateWalletOptions} options the wallet generation options\n */\n static fromLedger = (\n connector: LedgerConnector,\n options?: CreateWalletOptions,\n ): Wallet => {\n const wallet: Wallet = new Wallet();\n\n wallet.signer = new LedgerSigner(\n connector,\n options?.accountIndex ?? 0,\n options?.addressPrefix,\n );\n\n return wallet;\n };\n\n // Account manipulation //\n\n /**\n * Fetches the address associated with the wallet\n */\n getAddress = (): Promise<string> => {\n return this.signer.getAddress();\n };\n\n /**\n * Fetches the account sequence for the wallet\n * @param {number} [height=latest] the block height\n */\n getAccountSequence = async (height?: number): Promise<number> => {\n if (!this.provider) {\n throw new Error(\"provider not connected\");\n }\n\n // Get the address\n const address: string = await this.getAddress();\n\n return this.provider.getAccountSequence(address, height);\n };\n\n /**\n * Fetches the account number for the wallet. Errors out if the\n * account is not initialized\n * @param {number} [height=latest] the block height\n */\n getAccountNumber = async (height?: number): Promise<number> => {\n if (!this.provider) {\n throw new Error(\"provider not connected\");\n }\n\n // Get the address\n const address: string = await this.getAddress();\n\n return this.provider.getAccountNumber(address, height);\n };\n\n /**\n * Fetches the account balance for the specific denomination\n * @param {string} [denomination=ugnot] the fund denomination\n */\n getBalance = async (denomination?: string): Promise<number> => {\n if (!this.provider) {\n throw new Error(\"provider not connected\");\n }\n\n // Get the address\n const address: string = await this.getAddress();\n\n return this.provider.getBalance(\n address,\n denomination ? denomination : \"ugnot\",\n );\n };\n\n /**\n * Fetches the current (recommended) average gas price\n */\n getGasPrice = async (): Promise<number> => {\n if (!this.provider) {\n throw new Error(\"provider not connected\");\n }\n\n return this.provider.getGasPrice();\n };\n\n /**\n * Estimates the gas limit for the transaction\n * @param {Tx} tx the transaction that needs estimating\n */\n estimateGas = async (tx: Tx): Promise<bigint> => {\n if (!this.provider) {\n throw new Error(\"provider not connected\");\n }\n\n return this.provider.estimateGas(tx);\n };\n\n /**\n * Returns the connected provider, if any\n */\n getProvider = (): Provider => {\n return this.provider;\n };\n\n /**\n * Generates a transaction signature, and appends it to the transaction\n * @param {Tx} tx the transaction to be signed\n * @param {(messages: Any[]) => any[]} decodeTxMessages tx message decode callback\n * that should expand the concrete message fields into an object. Required because\n * the transaction sign bytes are generated using sorted JSON, which requires\n * encoded message values to be decoded for sorting\n */\n signTransaction = async (\n tx: Tx,\n decodeTxMessages: (messages: Any[]) => unknown[],\n opts?: SignTransactionOptions,\n ): Promise<Tx> => {\n if (!this.provider) {\n throw new Error(\"provider not connected\");\n }\n\n // Make sure the tx fee is initialized\n if (!tx.fee) {\n throw new Error(\"invalid transaction fee provided\");\n }\n\n // Extract the relevant chain data\n const status: Status = await this.provider.getStatus();\n const chainID: string = status.node_info.network;\n\n // Extract the relevant account data\n let accountNumber = opts?.accountNumber;\n let accountSequence = opts?.sequence;\n if (accountNumber === undefined || accountSequence === undefined) {\n const address: string = await this.getAddress();\n const account = await this.provider.getAccount(address);\n if (accountNumber === undefined) {\n accountNumber = account.BaseAccount.account_number;\n }\n if (accountSequence === undefined) {\n accountSequence = account.BaseAccount.sequence;\n }\n }\n const publicKey: Uint8Array = await this.signer.getPublicKey();\n\n // Create the signature payload\n const signPayload: TxSignPayload = {\n chain_id: chainID,\n account_number: accountNumber,\n sequence: accountSequence,\n fee: {\n gas_fee: tx.fee.gas_fee,\n gas_wanted: tx.fee.gas_wanted.toString(10),\n },\n msgs: decodeTxMessages(tx.messages), // unrolled message objects\n memo: tx.memo,\n };\n\n // The TM2 node does signature verification using\n // a sorted JSON object, so the payload needs to be sorted\n // before signing\n const signBytes: Uint8Array = stringToUTF8(\n encodeCharacterSet(sortedJsonStringify(signPayload)),\n );\n\n // The public key needs to be encoded using protobuf for Amino\n const wrappedKey: PubKeySecp256k1 = {\n key: publicKey,\n };\n\n // Generate the signature\n const txSignature: TxSignature = {\n pub_key: {\n type_url: Secp256k1PubKeyType,\n value: PubKeySecp256k1.encode(wrappedKey).finish(),\n },\n signature: await this.getSigner().signData(signBytes),\n };\n\n // Append the signature\n return {\n ...tx,\n signatures: [...tx.signatures, txSignature],\n };\n };\n\n /**\n * Encodes and sends the transaction. If the type of endpoint\n * is a broadcast commit, waits for the transaction to be committed to the chain.\n * The transaction needs to be signed beforehand.\n * Returns the transaction hash (base-64)\n * @param {Tx} tx the signed transaction\n * @param {BroadcastType} endpoint the transaction broadcast type (sync / commit)\n */\n async sendTransaction<K extends keyof BroadcastTransactionMap>(\n tx: Tx,\n endpoint: K,\n ): Promise<BroadcastTransactionMap[K][\"result\"]> {\n if (!this.provider) {\n throw new Error(\"provider not connected\");\n }\n\n // Encode the transaction to base-64\n const encodedTx: string = uint8ArrayToBase64(Tx.encode(tx).finish());\n\n // Send the encoded transaction\n return this.provider.sendTransaction(encodedTx, endpoint);\n }\n\n /**\n * Returns the associated signer\n */\n getSigner = (): Signer => {\n return this.signer;\n };\n}\n"],"mappings":"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"}
@@ -1,11 +1,13 @@
1
1
  import { Any } from "../proto/google/protobuf/any.cjs";
2
2
  import { Tx } from "../proto/tm2/tx.cjs";
3
+ import "../proto/index.cjs";
3
4
  import { BroadcastTransactionMap } from "../provider/types/common.cjs";
4
5
  import { Provider } from "../provider/provider.cjs";
6
+ import "../provider/index.cjs";
5
7
  import { Signer } from "./signer.cjs";
6
8
  import { AccountWalletOption, CreateWalletOptions } from "./types/wallet.cjs";
9
+ import "./types/index.cjs";
7
10
  import { LedgerConnector } from "@cosmjs/ledger-amino";
8
-
9
11
  //#region src/wallet/wallet.d.ts
10
12
  interface SignTransactionOptions {
11
13
  accountNumber?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"wallet.d.cts","names":[],"sources":["../../src/wallet/wallet.ts"],"mappings":";;;;;;;;;UAwCiB,sBAAA;EACf,aAAA;EACA,QAAA;AAAA;;;;AAFF;cASa,MAAA;EAAA,UACO,QAAA,EAAU,QAAA;EAAA,UACV,MAAA,EAAQ,MAAA;EATlB;AAOV;;;EAQE,OAAA,GAAW,QAAA,EAAU,QAAA;EANK;;;;EAAA,OAgBnB,YAAA,GACL,OAAA,GAAU,mBAAA,KACT,OAAA,CAAQ,MAAA;EAwBwB;;;;;EAAA,OAA5B,UAAA,GAAoB,MAAA,EAAQ,MAAA,KAAS,OAAA,CAAQ,MAAA;EAyCtC;;;;;EAAA,OA5BP,YAAA,GACL,QAAA,UACA,OAAA,GAAU,mBAAA,KACT,OAAA,CAAQ,MAAA;EAoDR;;;;;EAAA,OA5BI,cAAA,GACL,UAAA,EAAY,UAAA,EACZ,OAAA,GAAU,mBAAA,KACT,OAAA,CAAQ,MAAA;EA8Gc;;;;;EAAA,OAxFlB,UAAA,GACL,SAAA,EAAW,eAAA,EACX,OAAA,GAAU,mBAAA,KACT,MAAA;EAgHQ;;;EA/FX,UAAA,QAAiB,OAAA;EA+KL;;;;EAvKZ,kBAAA,GAA4B,MAAA,cAAkB,OAAA;EAuLxB;;;;;EAvKtB,gBAAA,GAA0B,MAAA,cAAkB,OAAA;EAjJ5C;;;;EAgKA,UAAA,GAAoB,YAAA,cAAwB,OAAA;EArJ1C;;;EAsKF,WAAA,QAAwB,OAAA;EA7IW;;;;EAyJnC,WAAA,GAAqB,EAAA,EAAI,EAAA,KAAK,OAAA;EA3I5B;;;EAsJF,WAAA,QAAkB,QAAA;EApJP;;;;;;;;EAgKX,eAAA,GACE,EAAA,EAAI,EAAA,EACJ,gBAAA,GAAmB,QAAA,EAAU,GAAA,kBAC7B,IAAA,GAAO,sBAAA,KACN,OAAA,CAAQ,EAAA;EAlHE;;;;;;;;EAgMP,eAAA,iBAAgC,uBAAA,CAAA,CACpC,EAAA,EAAI,EAAA,EACJ,QAAA,EAAU,CAAA,GACT,OAAA,CAAQ,uBAAA,CAAwB,CAAA;EAxKW;;;EAuL9C,SAAA,QAAgB,MAAA;AAAA"}
1
+ {"version":3,"file":"wallet.d.cts","names":[],"sources":["../../src/wallet/wallet.ts"],"mappings":";;;;;;;;;;;UAwCiB;EACf;EACA;;;;;;cAOW;YACO,UAAU;YACV,QAAQ;;;;;EAM1B,UAAW,UAAU;;;;;SAUd,eACL,UAAU,wBACT,QAAQ;;;;;;SAwBJ,aAAoB,QAAQ,WAAS,QAAQ;;;;;;SAa7C,eACL,kBACA,UAAU,wBACT,QAAQ;;;;;;SAwBJ,iBACL,YAAY,YACZ,UAAU,wBACT,QAAQ;;;;;;SAsBJ,aACL,WAAW,iBACX,UAAU,wBACT;;;;EAiBH,kBAAiB;;;;;EAQjB,qBAA4B,oBAAkB;;;;;;EAgB9C,mBAA0B,oBAAkB;;;;;EAe5C,aAAoB,0BAAwB;;;;EAiB5C,mBAAwB;;;;;EAYxB,cAAqB,IAAI,OAAK;;;;EAW9B,mBAAkB;;;;;;;;;EAYlB,kBACE,IAAI,IACJ,mBAAmB,UAAU,qBAC7B,OAAO,2BACN,QAAQ;;;;;;;;;EA8EL,gBAAgB,gBAAgB,yBACpC,IAAI,IACJ,UAAU,IACT,QAAQ,wBAAwB;;;;EAenC,iBAAgB"}
@@ -1,11 +1,13 @@
1
1
  import { Any } from "../proto/google/protobuf/any.mjs";
2
2
  import { Tx } from "../proto/tm2/tx.mjs";
3
+ import "../proto/index.mjs";
3
4
  import { BroadcastTransactionMap } from "../provider/types/common.mjs";
4
5
  import { Provider } from "../provider/provider.mjs";
6
+ import "../provider/index.mjs";
5
7
  import { Signer } from "./signer.mjs";
6
8
  import { AccountWalletOption, CreateWalletOptions } from "./types/wallet.mjs";
9
+ import "./types/index.mjs";
7
10
  import { LedgerConnector } from "@cosmjs/ledger-amino";
8
-
9
11
  //#region src/wallet/wallet.d.ts
10
12
  interface SignTransactionOptions {
11
13
  accountNumber?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"wallet.d.mts","names":[],"sources":["../../src/wallet/wallet.ts"],"mappings":";;;;;;;;;UAwCiB,sBAAA;EACf,aAAA;EACA,QAAA;AAAA;;;;AAFF;cASa,MAAA;EAAA,UACO,QAAA,EAAU,QAAA;EAAA,UACV,MAAA,EAAQ,MAAA;EATlB;AAOV;;;EAQE,OAAA,GAAW,QAAA,EAAU,QAAA;EANK;;;;EAAA,OAgBnB,YAAA,GACL,OAAA,GAAU,mBAAA,KACT,OAAA,CAAQ,MAAA;EAwBwB;;;;;EAAA,OAA5B,UAAA,GAAoB,MAAA,EAAQ,MAAA,KAAS,OAAA,CAAQ,MAAA;EAyCtC;;;;;EAAA,OA5BP,YAAA,GACL,QAAA,UACA,OAAA,GAAU,mBAAA,KACT,OAAA,CAAQ,MAAA;EAoDR;;;;;EAAA,OA5BI,cAAA,GACL,UAAA,EAAY,UAAA,EACZ,OAAA,GAAU,mBAAA,KACT,OAAA,CAAQ,MAAA;EA8Gc;;;;;EAAA,OAxFlB,UAAA,GACL,SAAA,EAAW,eAAA,EACX,OAAA,GAAU,mBAAA,KACT,MAAA;EAgHQ;;;EA/FX,UAAA,QAAiB,OAAA;EA+KL;;;;EAvKZ,kBAAA,GAA4B,MAAA,cAAkB,OAAA;EAuLxB;;;;;EAvKtB,gBAAA,GAA0B,MAAA,cAAkB,OAAA;EAjJ5C;;;;EAgKA,UAAA,GAAoB,YAAA,cAAwB,OAAA;EArJ1C;;;EAsKF,WAAA,QAAwB,OAAA;EA7IW;;;;EAyJnC,WAAA,GAAqB,EAAA,EAAI,EAAA,KAAK,OAAA;EA3I5B;;;EAsJF,WAAA,QAAkB,QAAA;EApJP;;;;;;;;EAgKX,eAAA,GACE,EAAA,EAAI,EAAA,EACJ,gBAAA,GAAmB,QAAA,EAAU,GAAA,kBAC7B,IAAA,GAAO,sBAAA,KACN,OAAA,CAAQ,EAAA;EAlHE;;;;;;;;EAgMP,eAAA,iBAAgC,uBAAA,CAAA,CACpC,EAAA,EAAI,EAAA,EACJ,QAAA,EAAU,CAAA,GACT,OAAA,CAAQ,uBAAA,CAAwB,CAAA;EAxKW;;;EAuL9C,SAAA,QAAgB,MAAA;AAAA"}
1
+ {"version":3,"file":"wallet.d.mts","names":[],"sources":["../../src/wallet/wallet.ts"],"mappings":";;;;;;;;;;;UAwCiB;EACf;EACA;;;;;;cAOW;YACO,UAAU;YACV,QAAQ;;;;;EAM1B,UAAW,UAAU;;;;;SAUd,eACL,UAAU,wBACT,QAAQ;;;;;;SAwBJ,aAAoB,QAAQ,WAAS,QAAQ;;;;;;SAa7C,eACL,kBACA,UAAU,wBACT,QAAQ;;;;;;SAwBJ,iBACL,YAAY,YACZ,UAAU,wBACT,QAAQ;;;;;;SAsBJ,aACL,WAAW,iBACX,UAAU,wBACT;;;;EAiBH,kBAAiB;;;;;EAQjB,qBAA4B,oBAAkB;;;;;;EAgB9C,mBAA0B,oBAAkB;;;;;EAe5C,aAAoB,0BAAwB;;;;EAiB5C,mBAAwB;;;;;EAYxB,cAAqB,IAAI,OAAK;;;;EAW9B,mBAAkB;;;;;;;;;EAYlB,kBACE,IAAI,IACJ,mBAAmB,UAAU,qBAC7B,OAAO,2BACN,QAAQ;;;;;;;;;EA8EL,gBAAgB,gBAAgB,yBACpC,IAAI,IACJ,UAAU,IACT,QAAQ,wBAAwB;;;;EAenC,iBAAgB"}
@@ -1,6 +1,6 @@
1
1
  import { PubKeySecp256k1, Tx } from "../proto/tm2/tx.mjs";
2
2
  import "../proto/index.mjs";
3
- import { _defineProperty } from "../_virtual/_@oxc-project_runtime@0.122.0/helpers/defineProperty.mjs";
3
+ import _defineProperty from "../_virtual/_@oxc-project_runtime@0.143.0/helpers/esm/defineProperty.mjs";
4
4
  import { uint8ArrayToBase64 } from "../provider/utility/requests.utility.mjs";
5
5
  import "../provider/index.mjs";
6
6
  import { encodeCharacterSet, generateEntropy, generateKeyPair, sortedJsonStringify, stringToUTF8 } from "./utility/utility.mjs";
@@ -138,7 +138,7 @@ var Wallet = class {
138
138
  if (accountSequence === void 0) accountSequence = account.BaseAccount.sequence;
139
139
  }
140
140
  const publicKey = await this.signer.getPublicKey();
141
- const signBytes = stringToUTF8(encodeCharacterSet(sortedJsonStringify({
141
+ const signPayload = {
142
142
  chain_id: chainID,
143
143
  account_number: accountNumber,
144
144
  sequence: accountSequence,
@@ -148,7 +148,8 @@ var Wallet = class {
148
148
  },
149
149
  msgs: decodeTxMessages(tx.messages),
150
150
  memo: tx.memo
151
- })));
151
+ };
152
+ const signBytes = stringToUTF8(encodeCharacterSet(sortedJsonStringify(signPayload)));
152
153
  const wrappedKey = { key: publicKey };
153
154
  const txSignature = {
154
155
  pub_key: {
@@ -1 +1 @@
1
- {"version":3,"file":"wallet.mjs","names":["Wallet"],"sources":["../../src/wallet/wallet.ts"],"sourcesContent":["import {\n Bip39, Secp256k1,\n} from \"@cosmjs/crypto\";\nimport {\n LedgerConnector,\n} from \"@cosmjs/ledger-amino\";\n\nimport {\n Any, PubKeySecp256k1, Tx, TxSignature,\n} from \"../proto/index.js\";\nimport {\n BroadcastTransactionMap,\n Provider,\n Status,\n uint8ArrayToBase64,\n} from \"../provider/index.js\";\nimport {\n KeySigner,\n} from \"./key/index.js\";\nimport {\n LedgerSigner,\n} from \"./ledger/index.js\";\nimport {\n Signer,\n} from \"./signer.js\";\nimport {\n AccountWalletOption,\n CreateWalletOptions,\n Secp256k1PubKeyType,\n TxSignPayload,\n} from \"./types/index.js\";\nimport {\n encodeCharacterSet,\n generateEntropy,\n generateKeyPair,\n stringToUTF8,\n} from \"./utility/index.js\";\nimport {\n sortedJsonStringify,\n} from \"./utility/index.js\";\nexport interface SignTransactionOptions {\n accountNumber?: string\n sequence?: string\n}\n\n/**\n * Wallet is a single account abstraction\n * that can interact with the blockchain\n */\nexport class Wallet {\n protected declare provider: Provider;\n protected declare signer: Signer;\n\n /**\n * Connects the wallet to the specified {@link Provider}\n * @param {Provider} provider the active {@link Provider}, if any\n */\n connect = (provider: Provider) => {\n this.provider = provider;\n };\n\n // Wallet initialization //\n\n /**\n * Generates a private key-based wallet, using a random seed\n * @param {AccountWalletOption} options the account options\n */\n static createRandom = async (\n options?: AccountWalletOption,\n ): Promise<Wallet> => {\n const {\n publicKey, privateKey,\n } = await generateKeyPair(\n Bip39.encode(generateEntropy()).toString(),\n 0,\n );\n\n // Initialize the wallet\n const wallet: Wallet = new Wallet();\n wallet.signer = new KeySigner(\n privateKey,\n Secp256k1.compressPubkey(publicKey),\n options?.addressPrefix,\n );\n\n return wallet;\n };\n\n /**\n * Generates a custom signer-based wallet\n * @param {Signer} signer the custom signer implementing the Signer interface\n * @param {CreateWalletOptions} options the wallet generation options\n */\n static fromSigner = async (signer: Signer): Promise<Wallet> => {\n // Initialize the wallet\n const wallet: Wallet = new Wallet();\n wallet.signer = signer;\n\n return wallet;\n };\n\n /**\n * Generates a bip39 mnemonic-based wallet\n * @param {string} mnemonic the bip39 mnemonic\n * @param {CreateWalletOptions} options the wallet generation options\n */\n static fromMnemonic = async (\n mnemonic: string,\n options?: CreateWalletOptions,\n ): Promise<Wallet> => {\n const {\n publicKey, privateKey,\n } = await generateKeyPair(\n mnemonic,\n options?.accountIndex,\n );\n\n // Initialize the wallet\n const wallet: Wallet = new Wallet();\n wallet.signer = new KeySigner(\n privateKey,\n Secp256k1.compressPubkey(publicKey),\n options?.addressPrefix,\n );\n\n return wallet;\n };\n\n /**\n * Generates a private key-based wallet\n * @param {string} privateKey the private key\n * @param {AccountWalletOption} options the account options\n */\n static fromPrivateKey = async (\n privateKey: Uint8Array,\n options?: AccountWalletOption,\n ): Promise<Wallet> => {\n // Derive the public key\n const {\n pubkey: publicKey,\n } = await Secp256k1.makeKeypair(privateKey);\n\n // Initialize the wallet\n const wallet: Wallet = new Wallet();\n wallet.signer = new KeySigner(\n privateKey,\n Secp256k1.compressPubkey(publicKey),\n options?.addressPrefix,\n );\n\n return wallet;\n };\n\n /**\n * Creates a Ledger-based wallet\n * @param {LedgerConnector} connector the Ledger device connector\n * @param {CreateWalletOptions} options the wallet generation options\n */\n static fromLedger = (\n connector: LedgerConnector,\n options?: CreateWalletOptions,\n ): Wallet => {\n const wallet: Wallet = new Wallet();\n\n wallet.signer = new LedgerSigner(\n connector,\n options?.accountIndex ?? 0,\n options?.addressPrefix,\n );\n\n return wallet;\n };\n\n // Account manipulation //\n\n /**\n * Fetches the address associated with the wallet\n */\n getAddress = (): Promise<string> => {\n return this.signer.getAddress();\n };\n\n /**\n * Fetches the account sequence for the wallet\n * @param {number} [height=latest] the block height\n */\n getAccountSequence = async (height?: number): Promise<number> => {\n if (!this.provider) {\n throw new Error(\"provider not connected\");\n }\n\n // Get the address\n const address: string = await this.getAddress();\n\n return this.provider.getAccountSequence(address, height);\n };\n\n /**\n * Fetches the account number for the wallet. Errors out if the\n * account is not initialized\n * @param {number} [height=latest] the block height\n */\n getAccountNumber = async (height?: number): Promise<number> => {\n if (!this.provider) {\n throw new Error(\"provider not connected\");\n }\n\n // Get the address\n const address: string = await this.getAddress();\n\n return this.provider.getAccountNumber(address, height);\n };\n\n /**\n * Fetches the account balance for the specific denomination\n * @param {string} [denomination=ugnot] the fund denomination\n */\n getBalance = async (denomination?: string): Promise<number> => {\n if (!this.provider) {\n throw new Error(\"provider not connected\");\n }\n\n // Get the address\n const address: string = await this.getAddress();\n\n return this.provider.getBalance(\n address,\n denomination ? denomination : \"ugnot\",\n );\n };\n\n /**\n * Fetches the current (recommended) average gas price\n */\n getGasPrice = async (): Promise<number> => {\n if (!this.provider) {\n throw new Error(\"provider not connected\");\n }\n\n return this.provider.getGasPrice();\n };\n\n /**\n * Estimates the gas limit for the transaction\n * @param {Tx} tx the transaction that needs estimating\n */\n estimateGas = async (tx: Tx): Promise<bigint> => {\n if (!this.provider) {\n throw new Error(\"provider not connected\");\n }\n\n return this.provider.estimateGas(tx);\n };\n\n /**\n * Returns the connected provider, if any\n */\n getProvider = (): Provider => {\n return this.provider;\n };\n\n /**\n * Generates a transaction signature, and appends it to the transaction\n * @param {Tx} tx the transaction to be signed\n * @param {(messages: Any[]) => any[]} decodeTxMessages tx message decode callback\n * that should expand the concrete message fields into an object. Required because\n * the transaction sign bytes are generated using sorted JSON, which requires\n * encoded message values to be decoded for sorting\n */\n signTransaction = async (\n tx: Tx,\n decodeTxMessages: (messages: Any[]) => unknown[],\n opts?: SignTransactionOptions,\n ): Promise<Tx> => {\n if (!this.provider) {\n throw new Error(\"provider not connected\");\n }\n\n // Make sure the tx fee is initialized\n if (!tx.fee) {\n throw new Error(\"invalid transaction fee provided\");\n }\n\n // Extract the relevant chain data\n const status: Status = await this.provider.getStatus();\n const chainID: string = status.node_info.network;\n\n // Extract the relevant account data\n let accountNumber = opts?.accountNumber;\n let accountSequence = opts?.sequence;\n if (accountNumber === undefined || accountSequence === undefined) {\n const address: string = await this.getAddress();\n const account = await this.provider.getAccount(address);\n if (accountNumber === undefined) {\n accountNumber = account.BaseAccount.account_number;\n }\n if (accountSequence === undefined) {\n accountSequence = account.BaseAccount.sequence;\n }\n }\n const publicKey: Uint8Array = await this.signer.getPublicKey();\n\n // Create the signature payload\n const signPayload: TxSignPayload = {\n chain_id: chainID,\n account_number: accountNumber,\n sequence: accountSequence,\n fee: {\n gas_fee: tx.fee.gas_fee,\n gas_wanted: tx.fee.gas_wanted.toString(10),\n },\n msgs: decodeTxMessages(tx.messages), // unrolled message objects\n memo: tx.memo,\n };\n\n // The TM2 node does signature verification using\n // a sorted JSON object, so the payload needs to be sorted\n // before signing\n const signBytes: Uint8Array = stringToUTF8(\n encodeCharacterSet(sortedJsonStringify(signPayload)),\n );\n\n // The public key needs to be encoded using protobuf for Amino\n const wrappedKey: PubKeySecp256k1 = {\n key: publicKey,\n };\n\n // Generate the signature\n const txSignature: TxSignature = {\n pub_key: {\n type_url: Secp256k1PubKeyType,\n value: PubKeySecp256k1.encode(wrappedKey).finish(),\n },\n signature: await this.getSigner().signData(signBytes),\n };\n\n // Append the signature\n return {\n ...tx,\n signatures: [...tx.signatures, txSignature],\n };\n };\n\n /**\n * Encodes and sends the transaction. If the type of endpoint\n * is a broadcast commit, waits for the transaction to be committed to the chain.\n * The transaction needs to be signed beforehand.\n * Returns the transaction hash (base-64)\n * @param {Tx} tx the signed transaction\n * @param {BroadcastType} endpoint the transaction broadcast type (sync / commit)\n */\n async sendTransaction<K extends keyof BroadcastTransactionMap>(\n tx: Tx,\n endpoint: K,\n ): Promise<BroadcastTransactionMap[K][\"result\"]> {\n if (!this.provider) {\n throw new Error(\"provider not connected\");\n }\n\n // Encode the transaction to base-64\n const encodedTx: string = uint8ArrayToBase64(Tx.encode(tx).finish());\n\n // Send the encoded transaction\n return this.provider.sendTransaction(encodedTx, endpoint);\n }\n\n /**\n * Returns the associated signer\n */\n getSigner = (): Signer => {\n return this.signer;\n };\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"wallet.mjs","names":["Wallet"],"sources":["../../src/wallet/wallet.ts"],"sourcesContent":["import {\n Bip39, Secp256k1,\n} from \"@cosmjs/crypto\";\nimport {\n LedgerConnector,\n} from \"@cosmjs/ledger-amino\";\n\nimport {\n Any, PubKeySecp256k1, Tx, TxSignature,\n} from \"../proto/index.js\";\nimport {\n BroadcastTransactionMap,\n Provider,\n Status,\n uint8ArrayToBase64,\n} from \"../provider/index.js\";\nimport {\n KeySigner,\n} from \"./key/index.js\";\nimport {\n LedgerSigner,\n} from \"./ledger/index.js\";\nimport {\n Signer,\n} from \"./signer.js\";\nimport {\n AccountWalletOption,\n CreateWalletOptions,\n Secp256k1PubKeyType,\n TxSignPayload,\n} from \"./types/index.js\";\nimport {\n encodeCharacterSet,\n generateEntropy,\n generateKeyPair,\n stringToUTF8,\n} from \"./utility/index.js\";\nimport {\n sortedJsonStringify,\n} from \"./utility/index.js\";\nexport interface SignTransactionOptions {\n accountNumber?: string\n sequence?: string\n}\n\n/**\n * Wallet is a single account abstraction\n * that can interact with the blockchain\n */\nexport class Wallet {\n protected declare provider: Provider;\n protected declare signer: Signer;\n\n /**\n * Connects the wallet to the specified {@link Provider}\n * @param {Provider} provider the active {@link Provider}, if any\n */\n connect = (provider: Provider) => {\n this.provider = provider;\n };\n\n // Wallet initialization //\n\n /**\n * Generates a private key-based wallet, using a random seed\n * @param {AccountWalletOption} options the account options\n */\n static createRandom = async (\n options?: AccountWalletOption,\n ): Promise<Wallet> => {\n const {\n publicKey, privateKey,\n } = await generateKeyPair(\n Bip39.encode(generateEntropy()).toString(),\n 0,\n );\n\n // Initialize the wallet\n const wallet: Wallet = new Wallet();\n wallet.signer = new KeySigner(\n privateKey,\n Secp256k1.compressPubkey(publicKey),\n options?.addressPrefix,\n );\n\n return wallet;\n };\n\n /**\n * Generates a custom signer-based wallet\n * @param {Signer} signer the custom signer implementing the Signer interface\n * @param {CreateWalletOptions} options the wallet generation options\n */\n static fromSigner = async (signer: Signer): Promise<Wallet> => {\n // Initialize the wallet\n const wallet: Wallet = new Wallet();\n wallet.signer = signer;\n\n return wallet;\n };\n\n /**\n * Generates a bip39 mnemonic-based wallet\n * @param {string} mnemonic the bip39 mnemonic\n * @param {CreateWalletOptions} options the wallet generation options\n */\n static fromMnemonic = async (\n mnemonic: string,\n options?: CreateWalletOptions,\n ): Promise<Wallet> => {\n const {\n publicKey, privateKey,\n } = await generateKeyPair(\n mnemonic,\n options?.accountIndex,\n );\n\n // Initialize the wallet\n const wallet: Wallet = new Wallet();\n wallet.signer = new KeySigner(\n privateKey,\n Secp256k1.compressPubkey(publicKey),\n options?.addressPrefix,\n );\n\n return wallet;\n };\n\n /**\n * Generates a private key-based wallet\n * @param {string} privateKey the private key\n * @param {AccountWalletOption} options the account options\n */\n static fromPrivateKey = async (\n privateKey: Uint8Array,\n options?: AccountWalletOption,\n ): Promise<Wallet> => {\n // Derive the public key\n const {\n pubkey: publicKey,\n } = await Secp256k1.makeKeypair(privateKey);\n\n // Initialize the wallet\n const wallet: Wallet = new Wallet();\n wallet.signer = new KeySigner(\n privateKey,\n Secp256k1.compressPubkey(publicKey),\n options?.addressPrefix,\n );\n\n return wallet;\n };\n\n /**\n * Creates a Ledger-based wallet\n * @param {LedgerConnector} connector the Ledger device connector\n * @param {CreateWalletOptions} options the wallet generation options\n */\n static fromLedger = (\n connector: LedgerConnector,\n options?: CreateWalletOptions,\n ): Wallet => {\n const wallet: Wallet = new Wallet();\n\n wallet.signer = new LedgerSigner(\n connector,\n options?.accountIndex ?? 0,\n options?.addressPrefix,\n );\n\n return wallet;\n };\n\n // Account manipulation //\n\n /**\n * Fetches the address associated with the wallet\n */\n getAddress = (): Promise<string> => {\n return this.signer.getAddress();\n };\n\n /**\n * Fetches the account sequence for the wallet\n * @param {number} [height=latest] the block height\n */\n getAccountSequence = async (height?: number): Promise<number> => {\n if (!this.provider) {\n throw new Error(\"provider not connected\");\n }\n\n // Get the address\n const address: string = await this.getAddress();\n\n return this.provider.getAccountSequence(address, height);\n };\n\n /**\n * Fetches the account number for the wallet. Errors out if the\n * account is not initialized\n * @param {number} [height=latest] the block height\n */\n getAccountNumber = async (height?: number): Promise<number> => {\n if (!this.provider) {\n throw new Error(\"provider not connected\");\n }\n\n // Get the address\n const address: string = await this.getAddress();\n\n return this.provider.getAccountNumber(address, height);\n };\n\n /**\n * Fetches the account balance for the specific denomination\n * @param {string} [denomination=ugnot] the fund denomination\n */\n getBalance = async (denomination?: string): Promise<number> => {\n if (!this.provider) {\n throw new Error(\"provider not connected\");\n }\n\n // Get the address\n const address: string = await this.getAddress();\n\n return this.provider.getBalance(\n address,\n denomination ? denomination : \"ugnot\",\n );\n };\n\n /**\n * Fetches the current (recommended) average gas price\n */\n getGasPrice = async (): Promise<number> => {\n if (!this.provider) {\n throw new Error(\"provider not connected\");\n }\n\n return this.provider.getGasPrice();\n };\n\n /**\n * Estimates the gas limit for the transaction\n * @param {Tx} tx the transaction that needs estimating\n */\n estimateGas = async (tx: Tx): Promise<bigint> => {\n if (!this.provider) {\n throw new Error(\"provider not connected\");\n }\n\n return this.provider.estimateGas(tx);\n };\n\n /**\n * Returns the connected provider, if any\n */\n getProvider = (): Provider => {\n return this.provider;\n };\n\n /**\n * Generates a transaction signature, and appends it to the transaction\n * @param {Tx} tx the transaction to be signed\n * @param {(messages: Any[]) => any[]} decodeTxMessages tx message decode callback\n * that should expand the concrete message fields into an object. Required because\n * the transaction sign bytes are generated using sorted JSON, which requires\n * encoded message values to be decoded for sorting\n */\n signTransaction = async (\n tx: Tx,\n decodeTxMessages: (messages: Any[]) => unknown[],\n opts?: SignTransactionOptions,\n ): Promise<Tx> => {\n if (!this.provider) {\n throw new Error(\"provider not connected\");\n }\n\n // Make sure the tx fee is initialized\n if (!tx.fee) {\n throw new Error(\"invalid transaction fee provided\");\n }\n\n // Extract the relevant chain data\n const status: Status = await this.provider.getStatus();\n const chainID: string = status.node_info.network;\n\n // Extract the relevant account data\n let accountNumber = opts?.accountNumber;\n let accountSequence = opts?.sequence;\n if (accountNumber === undefined || accountSequence === undefined) {\n const address: string = await this.getAddress();\n const account = await this.provider.getAccount(address);\n if (accountNumber === undefined) {\n accountNumber = account.BaseAccount.account_number;\n }\n if (accountSequence === undefined) {\n accountSequence = account.BaseAccount.sequence;\n }\n }\n const publicKey: Uint8Array = await this.signer.getPublicKey();\n\n // Create the signature payload\n const signPayload: TxSignPayload = {\n chain_id: chainID,\n account_number: accountNumber,\n sequence: accountSequence,\n fee: {\n gas_fee: tx.fee.gas_fee,\n gas_wanted: tx.fee.gas_wanted.toString(10),\n },\n msgs: decodeTxMessages(tx.messages), // unrolled message objects\n memo: tx.memo,\n };\n\n // The TM2 node does signature verification using\n // a sorted JSON object, so the payload needs to be sorted\n // before signing\n const signBytes: Uint8Array = stringToUTF8(\n encodeCharacterSet(sortedJsonStringify(signPayload)),\n );\n\n // The public key needs to be encoded using protobuf for Amino\n const wrappedKey: PubKeySecp256k1 = {\n key: publicKey,\n };\n\n // Generate the signature\n const txSignature: TxSignature = {\n pub_key: {\n type_url: Secp256k1PubKeyType,\n value: PubKeySecp256k1.encode(wrappedKey).finish(),\n },\n signature: await this.getSigner().signData(signBytes),\n };\n\n // Append the signature\n return {\n ...tx,\n signatures: [...tx.signatures, txSignature],\n };\n };\n\n /**\n * Encodes and sends the transaction. If the type of endpoint\n * is a broadcast commit, waits for the transaction to be committed to the chain.\n * The transaction needs to be signed beforehand.\n * Returns the transaction hash (base-64)\n * @param {Tx} tx the signed transaction\n * @param {BroadcastType} endpoint the transaction broadcast type (sync / commit)\n */\n async sendTransaction<K extends keyof BroadcastTransactionMap>(\n tx: Tx,\n endpoint: K,\n ): Promise<BroadcastTransactionMap[K][\"result\"]> {\n if (!this.provider) {\n throw new Error(\"provider not connected\");\n }\n\n // Encode the transaction to base-64\n const encodedTx: string = uint8ArrayToBase64(Tx.encode(tx).finish());\n\n // Send the encoded transaction\n return this.provider.sendTransaction(encodedTx, endpoint);\n }\n\n /**\n * Returns the associated signer\n */\n getSigner = (): Signer => {\n return this.signer;\n };\n}\n"],"mappings":"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"}