@initia/initia.js 1.0.21 → 2.0.0-rc.1

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 (713) hide show
  1. package/README.md +231 -163
  2. package/dist/abi-helpers-DdwdqhMQ.mjs +51 -0
  3. package/dist/abi-helpers-DdwdqhMQ.mjs.map +1 -0
  4. package/dist/address-DwAkzgJk.mjs +156 -0
  5. package/dist/address-DwAkzgJk.mjs.map +1 -0
  6. package/dist/address-profile-DjdaEBxo.d.mts +112 -0
  7. package/dist/address-profile-DlAFvgdg.mjs +241 -0
  8. package/dist/address-profile-DlAFvgdg.mjs.map +1 -0
  9. package/dist/amino-CMQN7Frn.mjs +220 -0
  10. package/dist/amino-CMQN7Frn.mjs.map +1 -0
  11. package/dist/amino_pb-Bi6YDY_U.mjs +88 -0
  12. package/dist/amino_pb-Bi6YDY_U.mjs.map +1 -0
  13. package/dist/amount-B0J9TTNF.mjs +90 -0
  14. package/dist/amount-B0J9TTNF.mjs.map +1 -0
  15. package/dist/any-DElm7qF7.mjs +19 -0
  16. package/dist/any-DElm7qF7.mjs.map +1 -0
  17. package/dist/auth_pb-DN4URGLh.mjs +26 -0
  18. package/dist/auth_pb-DN4URGLh.mjs.map +1 -0
  19. package/dist/auth_pb-DfXfdvrY.mjs +16 -0
  20. package/dist/auth_pb-DfXfdvrY.mjs.map +1 -0
  21. package/dist/base-provider-CLnd7kte.d.mts +68 -0
  22. package/dist/base-provider-LNp6K7Mt.mjs +96 -0
  23. package/dist/base-provider-LNp6K7Mt.mjs.map +1 -0
  24. package/dist/bcs-DiRcL4n9.mjs +533 -0
  25. package/dist/bcs-DiRcL4n9.mjs.map +1 -0
  26. package/dist/bridge-DL-q-7P7.mjs +1222 -0
  27. package/dist/bridge-DL-q-7P7.mjs.map +1 -0
  28. package/dist/bridge-cQoOjppA.d.mts +606 -0
  29. package/dist/broadcast-De8MdmYa.mjs +974 -0
  30. package/dist/broadcast-De8MdmYa.mjs.map +1 -0
  31. package/dist/chain-utils-C61cU5nd.mjs +139 -0
  32. package/dist/chain-utils-C61cU5nd.mjs.map +1 -0
  33. package/dist/codegen/cli.d.mts +1 -0
  34. package/dist/codegen/cli.mjs +274 -0
  35. package/dist/codegen/cli.mjs.map +1 -0
  36. package/dist/coin-DPWbtAFA.mjs +543 -0
  37. package/dist/coin-DPWbtAFA.mjs.map +1 -0
  38. package/dist/coin_pb--WuIu4sX.mjs +25 -0
  39. package/dist/coin_pb--WuIu4sX.mjs.map +1 -0
  40. package/dist/composite-provider-DbxNrdny.mjs +203 -0
  41. package/dist/composite-provider-DbxNrdny.mjs.map +1 -0
  42. package/dist/constants-W6V0E-3W.mjs +42 -0
  43. package/dist/constants-W6V0E-3W.mjs.map +1 -0
  44. package/dist/contract-Dpvu4wLO.mjs +657 -0
  45. package/dist/contract-Dpvu4wLO.mjs.map +1 -0
  46. package/dist/cosmos-Bqh8qNfP.mjs +540 -0
  47. package/dist/cosmos-Bqh8qNfP.mjs.map +1 -0
  48. package/dist/cosmos-registry-provider-DCrEEhJ-.d.mts +123 -0
  49. package/dist/cw20-BTpdgMXC.mjs +63 -0
  50. package/dist/cw20-BTpdgMXC.mjs.map +1 -0
  51. package/dist/decode-CXGawqIZ.mjs +29 -0
  52. package/dist/decode-CXGawqIZ.mjs.map +1 -0
  53. package/dist/entry.bridge.browser.d.mts +21 -0
  54. package/dist/entry.bridge.browser.mjs +25 -0
  55. package/dist/entry.bridge.browser.mjs.map +1 -0
  56. package/dist/entry.bridge.node.d.mts +21 -0
  57. package/dist/entry.bridge.node.mjs +25 -0
  58. package/dist/entry.bridge.node.mjs.map +1 -0
  59. package/dist/entry.browser.d.mts +49 -0
  60. package/dist/entry.browser.mjs +46 -0
  61. package/dist/entry.browser.mjs.map +1 -0
  62. package/dist/entry.chain.initia.browser.d.mts +8 -0
  63. package/dist/entry.chain.initia.browser.mjs +17 -0
  64. package/dist/entry.chain.initia.browser.mjs.map +1 -0
  65. package/dist/entry.chain.initia.node.d.mts +8 -0
  66. package/dist/entry.chain.initia.node.mjs +17 -0
  67. package/dist/entry.chain.initia.node.mjs.map +1 -0
  68. package/dist/entry.chain.minievm.browser.d.mts +8 -0
  69. package/dist/entry.chain.minievm.browser.mjs +17 -0
  70. package/dist/entry.chain.minievm.browser.mjs.map +1 -0
  71. package/dist/entry.chain.minievm.node.d.mts +8 -0
  72. package/dist/entry.chain.minievm.node.mjs +17 -0
  73. package/dist/entry.chain.minievm.node.mjs.map +1 -0
  74. package/dist/entry.chain.minimove.browser.d.mts +8 -0
  75. package/dist/entry.chain.minimove.browser.mjs +17 -0
  76. package/dist/entry.chain.minimove.browser.mjs.map +1 -0
  77. package/dist/entry.chain.minimove.node.d.mts +8 -0
  78. package/dist/entry.chain.minimove.node.mjs +17 -0
  79. package/dist/entry.chain.minimove.node.mjs.map +1 -0
  80. package/dist/entry.chain.miniwasm.browser.d.mts +8 -0
  81. package/dist/entry.chain.miniwasm.browser.mjs +17 -0
  82. package/dist/entry.chain.miniwasm.browser.mjs.map +1 -0
  83. package/dist/entry.chain.miniwasm.node.d.mts +8 -0
  84. package/dist/entry.chain.miniwasm.node.mjs +17 -0
  85. package/dist/entry.chain.miniwasm.node.mjs.map +1 -0
  86. package/dist/entry.client.browser.d.mts +3 -0
  87. package/dist/entry.client.browser.mjs +6 -0
  88. package/dist/entry.client.node-clFi8rmF.d.mts +1 -0
  89. package/dist/entry.client.node.d.mts +3 -0
  90. package/dist/entry.client.node.mjs +6 -0
  91. package/dist/entry.codegen.d.mts +251 -0
  92. package/dist/entry.codegen.mjs +2 -0
  93. package/dist/entry.cosmos.d.mts +2 -0
  94. package/dist/entry.cosmos.mjs +355 -0
  95. package/dist/entry.cosmos.mjs.map +1 -0
  96. package/dist/entry.events.d.mts +338 -0
  97. package/dist/entry.events.mjs +383 -0
  98. package/dist/entry.events.mjs.map +1 -0
  99. package/dist/entry.evm.d.mts +544 -0
  100. package/dist/entry.evm.mjs +761 -0
  101. package/dist/entry.evm.mjs.map +1 -0
  102. package/dist/entry.modules.d.mts +2 -0
  103. package/dist/entry.modules.mjs +7 -0
  104. package/dist/entry.move.d.mts +523 -0
  105. package/dist/entry.move.mjs +7 -0
  106. package/dist/entry.msgs.d.mts +2 -0
  107. package/dist/entry.msgs.mjs +3 -0
  108. package/dist/entry.node.d.mts +118 -0
  109. package/dist/entry.node.mjs +278 -0
  110. package/dist/entry.node.mjs.map +1 -0
  111. package/dist/entry.provider.d.mts +355 -0
  112. package/dist/entry.provider.mjs +416 -0
  113. package/dist/entry.provider.mjs.map +1 -0
  114. package/dist/entry.signer.d.mts +2 -0
  115. package/dist/entry.signer.mjs +674 -0
  116. package/dist/entry.signer.mjs.map +1 -0
  117. package/dist/entry.tx.d.mts +2 -0
  118. package/dist/entry.tx.mjs +6 -0
  119. package/dist/entry.usernames.d.mts +42 -0
  120. package/dist/entry.usernames.mjs +2 -0
  121. package/dist/entry.util.d.mts +103 -0
  122. package/dist/entry.util.mjs +70 -0
  123. package/dist/entry.util.mjs.map +1 -0
  124. package/dist/entry.vip.d.mts +1917 -0
  125. package/dist/entry.vip.mjs +3793 -0
  126. package/dist/entry.vip.mjs.map +1 -0
  127. package/dist/entry.wasm.d.mts +447 -0
  128. package/dist/entry.wasm.mjs +600 -0
  129. package/dist/entry.wasm.mjs.map +1 -0
  130. package/dist/erc20-CDs3j7vt.mjs +168 -0
  131. package/dist/erc20-CDs3j7vt.mjs.map +1 -0
  132. package/dist/errors-CN1MFOLv.mjs +253 -0
  133. package/dist/errors-CN1MFOLv.mjs.map +1 -0
  134. package/dist/evm-rpc-BxpgXIAF.mjs +338 -0
  135. package/dist/evm-rpc-BxpgXIAF.mjs.map +1 -0
  136. package/dist/fetch-Bq_aay6V.mjs +55 -0
  137. package/dist/fetch-Bq_aay6V.mjs.map +1 -0
  138. package/dist/fungible-asset-aHBTYpoT.mjs +64 -0
  139. package/dist/fungible-asset-aHBTYpoT.mjs.map +1 -0
  140. package/dist/get-tx-0P40z_A4.mjs +99 -0
  141. package/dist/get-tx-0P40z_A4.mjs.map +1 -0
  142. package/dist/grpc-client-DGyZjGcT.mjs +254 -0
  143. package/dist/grpc-client-DGyZjGcT.mjs.map +1 -0
  144. package/dist/hash-D40mxOlF.mjs +14 -0
  145. package/dist/hash-D40mxOlF.mjs.map +1 -0
  146. package/dist/hash-Doo89wm3.d.mts +31 -0
  147. package/dist/headers-CMO7ia_D.mjs +83 -0
  148. package/dist/headers-CMO7ia_D.mjs.map +1 -0
  149. package/dist/http-client-BrdVurTg.mjs +40 -0
  150. package/dist/http-client-BrdVurTg.mjs.map +1 -0
  151. package/dist/initia-B8l_x6sT.mjs +426 -0
  152. package/dist/initia-B8l_x6sT.mjs.map +1 -0
  153. package/dist/initia-Cj4bZ1dR.mjs +26 -0
  154. package/dist/initia-Cj4bZ1dR.mjs.map +1 -0
  155. package/dist/json-CGak0DqP.mjs +41 -0
  156. package/dist/json-CGak0DqP.mjs.map +1 -0
  157. package/dist/minievm-BAnGHa00.mjs +39 -0
  158. package/dist/minievm-BAnGHa00.mjs.map +1 -0
  159. package/dist/minievm-DZ8AhnD8.mjs +61 -0
  160. package/dist/minievm-DZ8AhnD8.mjs.map +1 -0
  161. package/dist/minimove-B8U85g-_.mjs +23 -0
  162. package/dist/minimove-B8U85g-_.mjs.map +1 -0
  163. package/dist/minimove-BBXTyhIv.mjs +24 -0
  164. package/dist/minimove-BBXTyhIv.mjs.map +1 -0
  165. package/dist/miniwasm-CB0XfStg.mjs +50 -0
  166. package/dist/miniwasm-CB0XfStg.mjs.map +1 -0
  167. package/dist/miniwasm-QdyYzmQ1.mjs +139 -0
  168. package/dist/miniwasm-QdyYzmQ1.mjs.map +1 -0
  169. package/dist/move-BaCv0oRX.mjs +64 -0
  170. package/dist/move-BaCv0oRX.mjs.map +1 -0
  171. package/dist/msg_pb-DxYxctLM.mjs +11 -0
  172. package/dist/msg_pb-DxYxctLM.mjs.map +1 -0
  173. package/dist/pagination_pb-DlkDYAcN.mjs +18 -0
  174. package/dist/pagination_pb-DlkDYAcN.mjs.map +1 -0
  175. package/dist/public-key-DV-uGaUC.mjs +550 -0
  176. package/dist/public-key-DV-uGaUC.mjs.map +1 -0
  177. package/dist/query_pb-cZ3szo3y.mjs +20 -0
  178. package/dist/query_pb-cZ3szo3y.mjs.map +1 -0
  179. package/dist/registry-provider-NzblVZQr.mjs +368 -0
  180. package/dist/registry-provider-NzblVZQr.mjs.map +1 -0
  181. package/dist/resolve-DdtY7KDz.mjs +50 -0
  182. package/dist/resolve-DdtY7KDz.mjs.map +1 -0
  183. package/dist/rolldown-runtime-wcPFST8Q.mjs +13 -0
  184. package/dist/service-BaMjxPNo.mjs +412 -0
  185. package/dist/service-BaMjxPNo.mjs.map +1 -0
  186. package/dist/service-CVFxsMp_.d.mts +151 -0
  187. package/dist/service_pb-Be-O-2-c.mjs +121 -0
  188. package/dist/service_pb-Be-O-2-c.mjs.map +1 -0
  189. package/dist/sign-DqagxLcg.mjs +212 -0
  190. package/dist/sign-DqagxLcg.mjs.map +1 -0
  191. package/dist/transport-common-BsPYcFQl.mjs +182 -0
  192. package/dist/transport-common-BsPYcFQl.mjs.map +1 -0
  193. package/dist/transport.browser-CCUWv3ta.mjs +31 -0
  194. package/dist/transport.browser-CCUWv3ta.mjs.map +1 -0
  195. package/dist/transport.node-DXcJtCnx.mjs +33 -0
  196. package/dist/transport.node-DXcJtCnx.mjs.map +1 -0
  197. package/dist/tx_pb-BJzY8SXE.mjs +38 -0
  198. package/dist/tx_pb-BJzY8SXE.mjs.map +1 -0
  199. package/dist/tx_pb-BVCXH992.mjs +39 -0
  200. package/dist/tx_pb-BVCXH992.mjs.map +1 -0
  201. package/dist/tx_pb-CnFNMLIq.mjs +107 -0
  202. package/dist/tx_pb-CnFNMLIq.mjs.map +1 -0
  203. package/dist/tx_pb-DYspoJTt.mjs +50 -0
  204. package/dist/tx_pb-DYspoJTt.mjs.map +1 -0
  205. package/dist/tx_pb-u3CoQYge.mjs +79 -0
  206. package/dist/tx_pb-u3CoQYge.mjs.map +1 -0
  207. package/dist/typed-context-Cg0If0M9.mjs +118 -0
  208. package/dist/typed-context-Cg0If0M9.mjs.map +1 -0
  209. package/dist/types-CLfdsa48.mjs +41 -0
  210. package/dist/types-CLfdsa48.mjs.map +1 -0
  211. package/dist/types-CSS5rfW1.mjs +303 -0
  212. package/dist/types-CSS5rfW1.mjs.map +1 -0
  213. package/dist/types-DGrP9Ro_.d.mts +39609 -0
  214. package/dist/types_pb-CrjtO9sB.mjs +21 -0
  215. package/dist/types_pb-CrjtO9sB.mjs.map +1 -0
  216. package/dist/types_pb-K7pKBvcg.mjs +1433 -0
  217. package/dist/types_pb-K7pKBvcg.mjs.map +1 -0
  218. package/dist/utils-B2carKSi.mjs +2 -0
  219. package/dist/waiting-BigHYRNN.mjs +1081 -0
  220. package/dist/waiting-BigHYRNN.mjs.map +1 -0
  221. package/dist/wasm-DdunGtLM.mjs +396 -0
  222. package/dist/wasm-DdunGtLM.mjs.map +1 -0
  223. package/package.json +195 -66
  224. package/dist/client/WebSocketClient.d.ts +0 -30
  225. package/dist/client/index.d.ts +0 -5
  226. package/dist/client/rest/APIRequester.d.ts +0 -27
  227. package/dist/client/rest/RESTClient.d.ts +0 -48
  228. package/dist/client/rest/Wallet.d.ts +0 -26
  229. package/dist/client/rest/api/AuctionAPI.d.ts +0 -6
  230. package/dist/client/rest/api/AuthAPI.d.ts +0 -8
  231. package/dist/client/rest/api/AuthzAPI.d.ts +0 -8
  232. package/dist/client/rest/api/BankAPI.d.ts +0 -10
  233. package/dist/client/rest/api/BaseAPI.d.ts +0 -5
  234. package/dist/client/rest/api/DistributionAPI.d.ts +0 -35
  235. package/dist/client/rest/api/EvidenceAPI.d.ts +0 -7
  236. package/dist/client/rest/api/EvmAPI.d.ts +0 -45
  237. package/dist/client/rest/api/FeeGrantAPI.d.ts +0 -22
  238. package/dist/client/rest/api/ForwardingAPI.d.ts +0 -20
  239. package/dist/client/rest/api/GovAPI.d.ts +0 -12
  240. package/dist/client/rest/api/GroupAPI.d.ts +0 -19
  241. package/dist/client/rest/api/IbcAPI.d.ts +0 -48
  242. package/dist/client/rest/api/IbcHooksAPI.d.ts +0 -8
  243. package/dist/client/rest/api/IbcNftAPI.d.ts +0 -11
  244. package/dist/client/rest/api/IbcPermAPI.d.ts +0 -12
  245. package/dist/client/rest/api/IbcTransferAPI.d.ts +0 -10
  246. package/dist/client/rest/api/InterTxAPI.d.ts +0 -6
  247. package/dist/client/rest/api/MarketmapAPI.d.ts +0 -18
  248. package/dist/client/rest/api/MoveAPI.d.ts +0 -62
  249. package/dist/client/rest/api/MstakingAPI.d.ts +0 -28
  250. package/dist/client/rest/api/OpchildAPI.d.ts +0 -23
  251. package/dist/client/rest/api/OphostAPI.d.ts +0 -34
  252. package/dist/client/rest/api/OracleAPI.d.ts +0 -22
  253. package/dist/client/rest/api/RewardAPI.d.ts +0 -8
  254. package/dist/client/rest/api/SlashingAPI.d.ts +0 -8
  255. package/dist/client/rest/api/TendermintAPI.d.ts +0 -16
  256. package/dist/client/rest/api/TokenfactoryAPI.d.ts +0 -12
  257. package/dist/client/rest/api/TxAPI.d.ts +0 -190
  258. package/dist/client/rest/api/UpgradeAPI.d.ts +0 -18
  259. package/dist/client/rest/api/WasmAPI.d.ts +0 -78
  260. package/dist/client/rest/api/index.d.ts +0 -30
  261. package/dist/core/Block.d.ts +0 -55
  262. package/dist/core/Coin.d.ts +0 -42
  263. package/dist/core/Coins.d.ts +0 -45
  264. package/dist/core/Denom.d.ts +0 -1
  265. package/dist/core/Duration.d.ts +0 -19
  266. package/dist/core/Msg.d.ts +0 -45
  267. package/dist/core/PublicKey.d.ts +0 -122
  268. package/dist/core/auction/AuctionParams.d.ts +0 -41
  269. package/dist/core/auction/index.d.ts +0 -2
  270. package/dist/core/auction/msgs/MsgAuctionBid.d.ts +0 -36
  271. package/dist/core/auction/msgs/MsgUpdateAuctionParams.d.ts +0 -33
  272. package/dist/core/auction/msgs/index.d.ts +0 -10
  273. package/dist/core/auth/Account.d.ts +0 -12
  274. package/dist/core/auth/AuthParams.d.ts +0 -37
  275. package/dist/core/auth/BaseAccount.d.ts +0 -45
  276. package/dist/core/auth/ModuleAccount.d.ts +0 -39
  277. package/dist/core/auth/index.d.ts +0 -5
  278. package/dist/core/auth/msgs/MsgUpdateAuthParams.d.ts +0 -33
  279. package/dist/core/auth/msgs/index.d.ts +0 -8
  280. package/dist/core/authz/authorizations/Authorization.d.ts +0 -42
  281. package/dist/core/authz/authorizations/CallAuthorization.d.ts +0 -28
  282. package/dist/core/authz/authorizations/ExecuteAuthorization.d.ts +0 -54
  283. package/dist/core/authz/authorizations/GenericAuthorization.d.ts +0 -28
  284. package/dist/core/authz/authorizations/PublishAuthorization.d.ts +0 -28
  285. package/dist/core/authz/authorizations/SendAuthorization.d.ts +0 -33
  286. package/dist/core/authz/authorizations/StakeAuthorization.d.ts +0 -60
  287. package/dist/core/authz/authorizations/index.d.ts +0 -7
  288. package/dist/core/authz/index.d.ts +0 -2
  289. package/dist/core/authz/msgs/MsgExecAuthorized.d.ts +0 -33
  290. package/dist/core/authz/msgs/MsgGrantAuthorization.d.ts +0 -36
  291. package/dist/core/authz/msgs/MsgRevokeAuthorization.d.ts +0 -35
  292. package/dist/core/authz/msgs/index.d.ts +0 -12
  293. package/dist/core/bank/BankParams.d.ts +0 -29
  294. package/dist/core/bank/DenomMetadata.d.ts +0 -43
  295. package/dist/core/bank/DenomUnit.d.ts +0 -28
  296. package/dist/core/bank/SendEnabled.d.ts +0 -25
  297. package/dist/core/bank/index.d.ts +0 -5
  298. package/dist/core/bank/msgs/MsgMultiSend.d.ts +0 -78
  299. package/dist/core/bank/msgs/MsgSend.d.ts +0 -36
  300. package/dist/core/bank/msgs/MsgSetDenomMetadata.d.ts +0 -33
  301. package/dist/core/bank/msgs/MsgSetSendEnabled.d.ts +0 -37
  302. package/dist/core/bank/msgs/MsgUpdateBankParams.d.ts +0 -33
  303. package/dist/core/bank/msgs/index.d.ts +0 -16
  304. package/dist/core/bech32.d.ts +0 -27
  305. package/dist/core/celestia/Blob.d.ts +0 -24
  306. package/dist/core/celestia/BlobTx.d.ts +0 -25
  307. package/dist/core/celestia/index.d.ts +0 -3
  308. package/dist/core/celestia/msgs/MsgPayForBlobs.d.ts +0 -31
  309. package/dist/core/celestia/msgs/index.d.ts +0 -7
  310. package/dist/core/consensus/ABCIParams.d.ts +0 -21
  311. package/dist/core/consensus/BlockParams.d.ts +0 -24
  312. package/dist/core/consensus/EvidenceParams.d.ts +0 -28
  313. package/dist/core/consensus/ValidatorParams.d.ts +0 -21
  314. package/dist/core/consensus/index.d.ts +0 -5
  315. package/dist/core/consensus/msgs/MsgUpdateConsensusParams.d.ts +0 -45
  316. package/dist/core/consensus/msgs/index.d.ts +0 -8
  317. package/dist/core/crisis/index.d.ts +0 -1
  318. package/dist/core/crisis/msgs/MsgUpdateCrisisParams.d.ts +0 -33
  319. package/dist/core/crisis/msgs/MsgVerifyInvariant.d.ts +0 -35
  320. package/dist/core/crisis/msgs/index.d.ts +0 -10
  321. package/dist/core/distribution/DistributionParams.d.ts +0 -32
  322. package/dist/core/distribution/RewardWeight.d.ts +0 -25
  323. package/dist/core/distribution/index.d.ts +0 -3
  324. package/dist/core/distribution/msgs/MsgCommunityPoolSpend.d.ts +0 -36
  325. package/dist/core/distribution/msgs/MsgDepositValidatorRewardsPool.d.ts +0 -40
  326. package/dist/core/distribution/msgs/MsgFundCommunityPool.d.ts +0 -33
  327. package/dist/core/distribution/msgs/MsgSetWithdrawAddress.d.ts +0 -32
  328. package/dist/core/distribution/msgs/MsgUpdateDistrParams.d.ts +0 -33
  329. package/dist/core/distribution/msgs/MsgWithdrawDelegatorReward.d.ts +0 -32
  330. package/dist/core/distribution/msgs/MsgWithdrawValidatorCommission.d.ts +0 -29
  331. package/dist/core/distribution/msgs/index.d.ts +0 -20
  332. package/dist/core/evidence/Equivocation.d.ts +0 -38
  333. package/dist/core/evidence/Evidence.d.ts +0 -11
  334. package/dist/core/evidence/index.d.ts +0 -3
  335. package/dist/core/evidence/msgs/MsgSubmitEvidence.d.ts +0 -33
  336. package/dist/core/evidence/msgs/index.d.ts +0 -8
  337. package/dist/core/evm/AccessTuple.d.ts +0 -25
  338. package/dist/core/evm/EvmParams.d.ts +0 -43
  339. package/dist/core/evm/GasEnforcement.d.ts +0 -27
  340. package/dist/core/evm/SetCodeAuthorization.d.ts +0 -30
  341. package/dist/core/evm/index.d.ts +0 -5
  342. package/dist/core/evm/msgs/MsgCall.d.ts +0 -46
  343. package/dist/core/evm/msgs/MsgCreate.d.ts +0 -39
  344. package/dist/core/evm/msgs/MsgCreate2.d.ts +0 -42
  345. package/dist/core/evm/msgs/MsgUpdateEvmParams.d.ts +0 -33
  346. package/dist/core/evm/msgs/index.d.ts +0 -14
  347. package/dist/core/feegrant/allowances/AllowedMsgAllowance.d.ts +0 -33
  348. package/dist/core/feegrant/allowances/BasicAllowance.d.ts +0 -32
  349. package/dist/core/feegrant/allowances/PeriodicAllowance.d.ts +0 -43
  350. package/dist/core/feegrant/allowances/index.d.ts +0 -16
  351. package/dist/core/feegrant/index.d.ts +0 -2
  352. package/dist/core/feegrant/msgs/MsgGrantAllowance.d.ts +0 -36
  353. package/dist/core/feegrant/msgs/MsgRevokeAllowance.d.ts +0 -32
  354. package/dist/core/feegrant/msgs/index.d.ts +0 -10
  355. package/dist/core/forwarding/index.d.ts +0 -1
  356. package/dist/core/forwarding/msgs/MsgClearForwardingAccount.d.ts +0 -32
  357. package/dist/core/forwarding/msgs/MsgRegisterForwardingAccount.d.ts +0 -38
  358. package/dist/core/forwarding/msgs/MsgSetAllowedDenoms.d.ts +0 -32
  359. package/dist/core/forwarding/msgs/MsgSetMemo.d.ts +0 -44
  360. package/dist/core/forwarding/msgs/index.d.ts +0 -14
  361. package/dist/core/gov/Deposit.d.ts +0 -29
  362. package/dist/core/gov/GovParams.d.ts +0 -85
  363. package/dist/core/gov/TallyResult.d.ts +0 -36
  364. package/dist/core/gov/Vesting.d.ts +0 -28
  365. package/dist/core/gov/Vote.d.ts +0 -55
  366. package/dist/core/gov/index.d.ts +0 -6
  367. package/dist/core/gov/msgs/MsgActivateEmergencyProposal.d.ts +0 -32
  368. package/dist/core/gov/msgs/MsgAddEmergencySubmitters.d.ts +0 -32
  369. package/dist/core/gov/msgs/MsgCancelProposal.d.ts +0 -32
  370. package/dist/core/gov/msgs/MsgDeposit.d.ts +0 -36
  371. package/dist/core/gov/msgs/MsgDepositLegacy.d.ts +0 -36
  372. package/dist/core/gov/msgs/MsgRemoveEmergencySubmitters.d.ts +0 -32
  373. package/dist/core/gov/msgs/MsgSubmitProposal.d.ts +0 -49
  374. package/dist/core/gov/msgs/MsgSubmitProposalLegacy.d.ts +0 -37
  375. package/dist/core/gov/msgs/MsgUpdateGovParams.d.ts +0 -33
  376. package/dist/core/gov/msgs/MsgVote.d.ts +0 -41
  377. package/dist/core/gov/msgs/MsgVoteLegacy.d.ts +0 -38
  378. package/dist/core/gov/msgs/MsgVoteWeighted.d.ts +0 -39
  379. package/dist/core/gov/msgs/MsgVoteWeightedLegacy.d.ts +0 -36
  380. package/dist/core/gov/msgs/index.d.ts +0 -32
  381. package/dist/core/gov/proposals/Content.d.ts +0 -12
  382. package/dist/core/gov/proposals/Proposal.d.ts +0 -79
  383. package/dist/core/gov/proposals/TextProposal.d.ts +0 -31
  384. package/dist/core/gov/proposals/index.d.ts +0 -3
  385. package/dist/core/group/GroupInfo.d.ts +0 -37
  386. package/dist/core/group/GroupMember.d.ts +0 -78
  387. package/dist/core/group/GroupPolicyInfo.d.ts +0 -41
  388. package/dist/core/group/GroupProposal.d.ts +0 -82
  389. package/dist/core/group/GroupVote.d.ts +0 -36
  390. package/dist/core/group/index.d.ts +0 -7
  391. package/dist/core/group/msgs/MsgCreateGroup.d.ts +0 -36
  392. package/dist/core/group/msgs/MsgCreateGroupPolicy.d.ts +0 -39
  393. package/dist/core/group/msgs/MsgCreateGroupWithPolicy.d.ts +0 -46
  394. package/dist/core/group/msgs/MsgGroupExec.d.ts +0 -32
  395. package/dist/core/group/msgs/MsgGroupVote.d.ts +0 -46
  396. package/dist/core/group/msgs/MsgLeaveGroup.d.ts +0 -32
  397. package/dist/core/group/msgs/MsgSubmitGroupProposal.d.ts +0 -50
  398. package/dist/core/group/msgs/MsgUpdateGroupAdmin.d.ts +0 -35
  399. package/dist/core/group/msgs/MsgUpdateGroupDecisionPolicy.d.ts +0 -36
  400. package/dist/core/group/msgs/MsgUpdateGroupMembers.d.ts +0 -36
  401. package/dist/core/group/msgs/MsgUpdateGroupMetadata.d.ts +0 -35
  402. package/dist/core/group/msgs/MsgUpdateGroupPolicyAdmin.d.ts +0 -35
  403. package/dist/core/group/msgs/MsgUpdateGroupPolicyMetadata.d.ts +0 -35
  404. package/dist/core/group/msgs/MsgWithdrawProposal.d.ts +0 -32
  405. package/dist/core/group/msgs/index.d.ts +0 -32
  406. package/dist/core/group/policies/DecisionPolicyWindows.d.ts +0 -25
  407. package/dist/core/group/policies/PercentageDecisionPolicy.d.ts +0 -32
  408. package/dist/core/group/policies/ThresholdDecisionPolicy.d.ts +0 -32
  409. package/dist/core/group/policies/index.d.ts +0 -15
  410. package/dist/core/ibc/applications/fee/IbcFee.d.ts +0 -28
  411. package/dist/core/ibc/applications/fee/IdentifiedPacketFee.d.ts +0 -26
  412. package/dist/core/ibc/applications/fee/Metadata.d.ts +0 -24
  413. package/dist/core/ibc/applications/fee/PacketFee.d.ts +0 -29
  414. package/dist/core/ibc/applications/fee/index.d.ts +0 -5
  415. package/dist/core/ibc/applications/fee/msgs/MsgPayPacketFee.d.ts +0 -31
  416. package/dist/core/ibc/applications/fee/msgs/MsgPayPacketFeeAsync.d.ts +0 -26
  417. package/dist/core/ibc/applications/fee/msgs/MsgRegisterCounterpartyPayee.d.ts +0 -28
  418. package/dist/core/ibc/applications/fee/msgs/MsgRegisterPayee.d.ts +0 -28
  419. package/dist/core/ibc/applications/fee/msgs/index.d.ts +0 -13
  420. package/dist/core/ibc/applications/index.d.ts +0 -4
  421. package/dist/core/ibc/applications/interchain-account/Account.d.ts +0 -25
  422. package/dist/core/ibc/applications/interchain-account/Metadata.d.ts +0 -36
  423. package/dist/core/ibc/applications/interchain-account/controller/Params.d.ts +0 -21
  424. package/dist/core/ibc/applications/interchain-account/host/Params.d.ts +0 -24
  425. package/dist/core/ibc/applications/interchain-account/index.d.ts +0 -4
  426. package/dist/core/ibc/applications/nft-transfer/IbcNftParams.d.ts +0 -28
  427. package/dist/core/ibc/applications/nft-transfer/NftClassTrace.d.ts +0 -24
  428. package/dist/core/ibc/applications/nft-transfer/NonFungibleTokenPacketData.d.ts +0 -45
  429. package/dist/core/ibc/applications/nft-transfer/index.d.ts +0 -4
  430. package/dist/core/ibc/applications/nft-transfer/msgs/MsgNftTransfer.d.ts +0 -54
  431. package/dist/core/ibc/applications/nft-transfer/msgs/MsgUpdateIbcNftParams.d.ts +0 -33
  432. package/dist/core/ibc/applications/nft-transfer/msgs/index.d.ts +0 -10
  433. package/dist/core/ibc/applications/perm/index.d.ts +0 -1
  434. package/dist/core/ibc/applications/perm/msgs/MsgUpdateIbcPermAdmin.d.ts +0 -38
  435. package/dist/core/ibc/applications/perm/msgs/MsgUpdatePermissionedRelayers.d.ts +0 -38
  436. package/dist/core/ibc/applications/perm/msgs/index.d.ts +0 -10
  437. package/dist/core/ibc/applications/transfer/DenomTrace.d.ts +0 -24
  438. package/dist/core/ibc/applications/transfer/FungibleTokenPacketData.d.ts +0 -33
  439. package/dist/core/ibc/applications/transfer/IbcTransferParams.d.ts +0 -24
  440. package/dist/core/ibc/applications/transfer/authorizations/Allocation.d.ts +0 -34
  441. package/dist/core/ibc/applications/transfer/authorizations/TransferAuthorization.d.ts +0 -23
  442. package/dist/core/ibc/applications/transfer/authorizations/index.d.ts +0 -2
  443. package/dist/core/ibc/applications/transfer/index.d.ts +0 -5
  444. package/dist/core/ibc/applications/transfer/msgs/MsgTransfer.d.ts +0 -52
  445. package/dist/core/ibc/applications/transfer/msgs/MsgUpdateIbcTransferParams.d.ts +0 -26
  446. package/dist/core/ibc/applications/transfer/msgs/index.d.ts +0 -10
  447. package/dist/core/ibc/core/channel/Channel.d.ts +0 -39
  448. package/dist/core/ibc/core/channel/ChannelCounterparty.d.ts +0 -24
  449. package/dist/core/ibc/core/channel/ChannelOrder.d.ts +0 -3
  450. package/dist/core/ibc/core/channel/ChannelState.d.ts +0 -3
  451. package/dist/core/ibc/core/channel/ErrorReceipt.d.ts +0 -20
  452. package/dist/core/ibc/core/channel/IbcChannelParams.d.ts +0 -22
  453. package/dist/core/ibc/core/channel/IdentifiedChannel.d.ts +0 -45
  454. package/dist/core/ibc/core/channel/Packet.d.ts +0 -43
  455. package/dist/core/ibc/core/channel/PacketId.d.ts +0 -27
  456. package/dist/core/ibc/core/channel/Timeout.d.ts +0 -25
  457. package/dist/core/ibc/core/channel/Upgrade.d.ts +0 -24
  458. package/dist/core/ibc/core/channel/UpgradeFields.d.ts +0 -23
  459. package/dist/core/ibc/core/channel/index.d.ts +0 -13
  460. package/dist/core/ibc/core/channel/msgs/MsgChannelCloseConfirm.d.ts +0 -32
  461. package/dist/core/ibc/core/channel/msgs/MsgChannelCloseInit.d.ts +0 -27
  462. package/dist/core/ibc/core/channel/msgs/MsgChannelOpenAck.d.ts +0 -36
  463. package/dist/core/ibc/core/channel/msgs/MsgChannelOpenConfirm.d.ts +0 -32
  464. package/dist/core/ibc/core/channel/msgs/MsgChannelOpenInit.d.ts +0 -28
  465. package/dist/core/ibc/core/channel/msgs/MsgChannelOpenTry.d.ts +0 -36
  466. package/dist/core/ibc/core/channel/msgs/MsgChannelUpgradeAck.d.ts +0 -37
  467. package/dist/core/ibc/core/channel/msgs/MsgChannelUpgradeCancel.d.ts +0 -35
  468. package/dist/core/ibc/core/channel/msgs/MsgChannelUpgradeConfirm.d.ts +0 -40
  469. package/dist/core/ibc/core/channel/msgs/MsgChannelUpgradeInit.d.ts +0 -30
  470. package/dist/core/ibc/core/channel/msgs/MsgChannelUpgradeOpen.d.ts +0 -37
  471. package/dist/core/ibc/core/channel/msgs/MsgChannelUpgradeTimeout.d.ts +0 -35
  472. package/dist/core/ibc/core/channel/msgs/MsgChannelUpgradeTry.d.ts +0 -41
  473. package/dist/core/ibc/core/channel/msgs/MsgRecvAcknowledgement.d.ts +0 -32
  474. package/dist/core/ibc/core/channel/msgs/MsgRecvPacket.d.ts +0 -30
  475. package/dist/core/ibc/core/channel/msgs/MsgTimeout.d.ts +0 -32
  476. package/dist/core/ibc/core/channel/msgs/MsgTimeoutClose.d.ts +0 -34
  477. package/dist/core/ibc/core/channel/msgs/MsgUpdateIbcChannelParams.d.ts +0 -26
  478. package/dist/core/ibc/core/channel/msgs/index.d.ts +0 -41
  479. package/dist/core/ibc/core/client/ClientConsensusStates.d.ts +0 -25
  480. package/dist/core/ibc/core/client/ConsensusStateWithHeight.d.ts +0 -25
  481. package/dist/core/ibc/core/client/Height.d.ts +0 -24
  482. package/dist/core/ibc/core/client/IbcClientParams.d.ts +0 -21
  483. package/dist/core/ibc/core/client/IdentifiedClient.d.ts +0 -24
  484. package/dist/core/ibc/core/client/index.d.ts +0 -6
  485. package/dist/core/ibc/core/client/msgs/MsgCreateClient.d.ts +0 -27
  486. package/dist/core/ibc/core/client/msgs/MsgIBCSoftwareUpgrade.d.ts +0 -28
  487. package/dist/core/ibc/core/client/msgs/MsgRecoverClient.d.ts +0 -27
  488. package/dist/core/ibc/core/client/msgs/MsgSubmitMisbehaviour.d.ts +0 -27
  489. package/dist/core/ibc/core/client/msgs/MsgUpdateClient.d.ts +0 -27
  490. package/dist/core/ibc/core/client/msgs/MsgUpdateIbcClientParams.d.ts +0 -26
  491. package/dist/core/ibc/core/client/msgs/MsgUpgradeClient.d.ts +0 -33
  492. package/dist/core/ibc/core/client/msgs/index.d.ts +0 -19
  493. package/dist/core/ibc/core/client/msgs/tendermint/crypto.d.ts +0 -43
  494. package/dist/core/ibc/core/client/msgs/tendermint/types.d.ts +0 -187
  495. package/dist/core/ibc/core/client/msgs/tendermint/version.d.ts +0 -38
  496. package/dist/core/ibc/core/commitment/MerklePrefix.d.ts +0 -21
  497. package/dist/core/ibc/core/commitment/MerkleRoot.d.ts +0 -21
  498. package/dist/core/ibc/core/commitment/index.d.ts +0 -2
  499. package/dist/core/ibc/core/connection/ConnectionCounterparty.d.ts +0 -28
  500. package/dist/core/ibc/core/connection/ConnectionState.d.ts +0 -3
  501. package/dist/core/ibc/core/connection/IbcConnectionParams.d.ts +0 -21
  502. package/dist/core/ibc/core/connection/IbcVersion.d.ts +0 -24
  503. package/dist/core/ibc/core/connection/IdentifiedConnection.d.ts +0 -39
  504. package/dist/core/ibc/core/connection/index.d.ts +0 -5
  505. package/dist/core/ibc/core/connection/msgs/MsgConnectionOpenAck.d.ts +0 -42
  506. package/dist/core/ibc/core/connection/msgs/MsgConnectionOpenConfirm.d.ts +0 -30
  507. package/dist/core/ibc/core/connection/msgs/MsgConnectionOpenInit.d.ts +0 -33
  508. package/dist/core/ibc/core/connection/msgs/MsgConnectionOpenTry.d.ts +0 -46
  509. package/dist/core/ibc/core/connection/msgs/MsgUpdateIbcConnectionParams.d.ts +0 -26
  510. package/dist/core/ibc/core/connection/msgs/index.d.ts +0 -15
  511. package/dist/core/ibc/core/index.d.ts +0 -4
  512. package/dist/core/ibc/index.d.ts +0 -2
  513. package/dist/core/ibc/lightclient/index.d.ts +0 -1
  514. package/dist/core/ibc/lightclient/tendermint/Header.d.ts +0 -29
  515. package/dist/core/ibchooks/ACL.d.ts +0 -25
  516. package/dist/core/ibchooks/IbcHooksParams.d.ts +0 -25
  517. package/dist/core/ibchooks/index.d.ts +0 -3
  518. package/dist/core/ibchooks/msgs/MsgUpdateACL.d.ts +0 -35
  519. package/dist/core/ibchooks/msgs/MsgUpdateIbcHooksParams.d.ts +0 -33
  520. package/dist/core/ibchooks/msgs/index.d.ts +0 -10
  521. package/dist/core/index.d.ts +0 -40
  522. package/dist/core/intertx/index.d.ts +0 -1
  523. package/dist/core/intertx/msgs/MsgRegisterAccount.d.ts +0 -39
  524. package/dist/core/intertx/msgs/MsgSubmitTx.d.ts +0 -36
  525. package/dist/core/intertx/msgs/index.d.ts +0 -10
  526. package/dist/core/marketmap/Market.d.ts +0 -26
  527. package/dist/core/marketmap/MarketmapParams.d.ts +0 -25
  528. package/dist/core/marketmap/ProviderConfig.d.ts +0 -34
  529. package/dist/core/marketmap/Ticker.d.ts +0 -34
  530. package/dist/core/marketmap/index.d.ts +0 -5
  531. package/dist/core/marketmap/msgs/MsgCreateMarkets.d.ts +0 -33
  532. package/dist/core/marketmap/msgs/MsgRemoveMarketAuthorities.d.ts +0 -32
  533. package/dist/core/marketmap/msgs/MsgRemoveMarkets.d.ts +0 -32
  534. package/dist/core/marketmap/msgs/MsgUpdateMarketmapParams.d.ts +0 -33
  535. package/dist/core/marketmap/msgs/MsgUpdateMarkets.d.ts +0 -33
  536. package/dist/core/marketmap/msgs/MsgUpsertMarkets.d.ts +0 -33
  537. package/dist/core/marketmap/msgs/index.d.ts +0 -18
  538. package/dist/core/move/Module.d.ts +0 -36
  539. package/dist/core/move/MoveParams.d.ts +0 -37
  540. package/dist/core/move/index.d.ts +0 -3
  541. package/dist/core/move/msgs/MsgDelist.d.ts +0 -32
  542. package/dist/core/move/msgs/MsgExecute.d.ts +0 -44
  543. package/dist/core/move/msgs/MsgExecuteJSON.d.ts +0 -44
  544. package/dist/core/move/msgs/MsgGovExecute.d.ts +0 -47
  545. package/dist/core/move/msgs/MsgGovExecuteJSON.d.ts +0 -47
  546. package/dist/core/move/msgs/MsgGovPublish.d.ts +0 -41
  547. package/dist/core/move/msgs/MsgGovScript.d.ts +0 -41
  548. package/dist/core/move/msgs/MsgGovScriptJSON.d.ts +0 -41
  549. package/dist/core/move/msgs/MsgPublish.d.ts +0 -38
  550. package/dist/core/move/msgs/MsgScript.d.ts +0 -38
  551. package/dist/core/move/msgs/MsgScriptJSON.d.ts +0 -38
  552. package/dist/core/move/msgs/MsgUpdateMoveParams.d.ts +0 -33
  553. package/dist/core/move/msgs/MsgWhitelist.d.ts +0 -35
  554. package/dist/core/move/msgs/index.d.ts +0 -32
  555. package/dist/core/mstaking/Delegation.d.ts +0 -36
  556. package/dist/core/mstaking/MstakingParams.d.ts +0 -44
  557. package/dist/core/mstaking/Redelegation.d.ts +0 -71
  558. package/dist/core/mstaking/UnbondingDelegation.d.ts +0 -57
  559. package/dist/core/mstaking/Validator.d.ts +0 -137
  560. package/dist/core/mstaking/index.d.ts +0 -6
  561. package/dist/core/mstaking/msgs/MsgBeginRedelegate.d.ts +0 -39
  562. package/dist/core/mstaking/msgs/MsgCancelUnbondingDelegation.d.ts +0 -39
  563. package/dist/core/mstaking/msgs/MsgCreateValidator.d.ts +0 -44
  564. package/dist/core/mstaking/msgs/MsgDelegate.d.ts +0 -36
  565. package/dist/core/mstaking/msgs/MsgEditValidator.d.ts +0 -37
  566. package/dist/core/mstaking/msgs/MsgUndelegate.d.ts +0 -36
  567. package/dist/core/mstaking/msgs/MsgUpdateMstakingParams.d.ts +0 -33
  568. package/dist/core/mstaking/msgs/index.d.ts +0 -20
  569. package/dist/core/num.d.ts +0 -2
  570. package/dist/core/opchild/BridgeInfo.d.ts +0 -34
  571. package/dist/core/opchild/L2MigrationInfo.d.ts +0 -27
  572. package/dist/core/opchild/OpValidator.d.ts +0 -32
  573. package/dist/core/opchild/OpchildParams.d.ts +0 -45
  574. package/dist/core/opchild/index.d.ts +0 -5
  575. package/dist/core/opchild/msgs/MsgAddAttestor.d.ts +0 -39
  576. package/dist/core/opchild/msgs/MsgAddBridgeExecutor.d.ts +0 -32
  577. package/dist/core/opchild/msgs/MsgAddFeeWhitelistAddresses.d.ts +0 -32
  578. package/dist/core/opchild/msgs/MsgExecuteMessages.d.ts +0 -33
  579. package/dist/core/opchild/msgs/MsgFinalizeTokenDeposit.d.ts +0 -52
  580. package/dist/core/opchild/msgs/MsgInitiateTokenWithdrawal.d.ts +0 -36
  581. package/dist/core/opchild/msgs/MsgMigrateToken.d.ts +0 -33
  582. package/dist/core/opchild/msgs/MsgRegisterL2MigrationInfo.d.ts +0 -33
  583. package/dist/core/opchild/msgs/MsgRemoveAttestor.d.ts +0 -32
  584. package/dist/core/opchild/msgs/MsgRemoveBridgeExecutor.d.ts +0 -32
  585. package/dist/core/opchild/msgs/MsgRemoveFeeWhitelistAddresses.d.ts +0 -32
  586. package/dist/core/opchild/msgs/MsgSetBridgeInfo.d.ts +0 -33
  587. package/dist/core/opchild/msgs/MsgSpendFeePool.d.ts +0 -36
  588. package/dist/core/opchild/msgs/MsgUpdateMinGasPrices.d.ts +0 -33
  589. package/dist/core/opchild/msgs/MsgUpdateOpchildAdmin.d.ts +0 -32
  590. package/dist/core/opchild/msgs/MsgUpdateOpchildParams.d.ts +0 -33
  591. package/dist/core/opchild/msgs/MsgUpdateOracle.d.ts +0 -35
  592. package/dist/core/opchild/msgs/MsgUpdateSequencer.d.ts +0 -39
  593. package/dist/core/opchild/msgs/index.d.ts +0 -42
  594. package/dist/core/ophost/BatchInfo.d.ts +0 -25
  595. package/dist/core/ophost/BatchInfoWithOutput.d.ts +0 -26
  596. package/dist/core/ophost/BridgeConfig.d.ts +0 -51
  597. package/dist/core/ophost/L1MigrationInfo.d.ts +0 -30
  598. package/dist/core/ophost/OphostParams.d.ts +0 -26
  599. package/dist/core/ophost/Output.d.ts +0 -30
  600. package/dist/core/ophost/index.d.ts +0 -7
  601. package/dist/core/ophost/msgs/MsgCreateBridge.d.ts +0 -33
  602. package/dist/core/ophost/msgs/MsgDeleteOutput.d.ts +0 -35
  603. package/dist/core/ophost/msgs/MsgDisableBridge.d.ts +0 -32
  604. package/dist/core/ophost/msgs/MsgFinalizeTokenWithdrawal.d.ts +0 -60
  605. package/dist/core/ophost/msgs/MsgInitiateTokenDeposit.d.ts +0 -42
  606. package/dist/core/ophost/msgs/MsgProposeOutput.d.ts +0 -41
  607. package/dist/core/ophost/msgs/MsgRecordBatch.d.ts +0 -35
  608. package/dist/core/ophost/msgs/MsgRegisterL1MigrationInfo.d.ts +0 -33
  609. package/dist/core/ophost/msgs/MsgUpdateBatchInfo.d.ts +0 -36
  610. package/dist/core/ophost/msgs/MsgUpdateChallenger.d.ts +0 -35
  611. package/dist/core/ophost/msgs/MsgUpdateFinalizationPeriod.d.ts +0 -36
  612. package/dist/core/ophost/msgs/MsgUpdateMetadata.d.ts +0 -35
  613. package/dist/core/ophost/msgs/MsgUpdateOphostParams.d.ts +0 -33
  614. package/dist/core/ophost/msgs/MsgUpdateOracleConfig.d.ts +0 -35
  615. package/dist/core/ophost/msgs/MsgUpdateProposer.d.ts +0 -35
  616. package/dist/core/ophost/msgs/index.d.ts +0 -36
  617. package/dist/core/oracle/CurrencyPair.d.ts +0 -25
  618. package/dist/core/oracle/QuotePrice.d.ts +0 -27
  619. package/dist/core/oracle/index.d.ts +0 -3
  620. package/dist/core/oracle/msgs/MsgAddCurrencyPairs.d.ts +0 -33
  621. package/dist/core/oracle/msgs/MsgRemoveCurrencyPairs.d.ts +0 -32
  622. package/dist/core/oracle/msgs/index.d.ts +0 -10
  623. package/dist/core/params/ParamChange.d.ts +0 -42
  624. package/dist/core/params/index.d.ts +0 -2
  625. package/dist/core/params/proposals/ParameterChangeProposal.d.ts +0 -35
  626. package/dist/core/params/proposals/index.d.ts +0 -1
  627. package/dist/core/reward/RewardParams.d.ts +0 -38
  628. package/dist/core/reward/index.d.ts +0 -2
  629. package/dist/core/reward/msgs/MsgFundCommunityPoolReward.d.ts +0 -33
  630. package/dist/core/reward/msgs/MsgUpdateRewardParams.d.ts +0 -33
  631. package/dist/core/reward/msgs/index.d.ts +0 -10
  632. package/dist/core/slashing/SlashingParams.d.ts +0 -38
  633. package/dist/core/slashing/ValidatorSigningInfo.d.ts +0 -37
  634. package/dist/core/slashing/index.d.ts +0 -3
  635. package/dist/core/slashing/msgs/MsgUnjail.d.ts +0 -29
  636. package/dist/core/slashing/msgs/MsgUpdateSlashingParams.d.ts +0 -33
  637. package/dist/core/slashing/msgs/index.d.ts +0 -10
  638. package/dist/core/tokenfactory/TokenfactoryParams.d.ts +0 -25
  639. package/dist/core/tokenfactory/index.d.ts +0 -2
  640. package/dist/core/tokenfactory/msgs/MsgBurn.d.ts +0 -33
  641. package/dist/core/tokenfactory/msgs/MsgChangeAdmin.d.ts +0 -35
  642. package/dist/core/tokenfactory/msgs/MsgCreateDenom.d.ts +0 -32
  643. package/dist/core/tokenfactory/msgs/MsgMint.d.ts +0 -36
  644. package/dist/core/tokenfactory/msgs/MsgSetBeforeSendHook.d.ts +0 -35
  645. package/dist/core/tokenfactory/msgs/MsgSetDenomMetadataWasm.d.ts +0 -33
  646. package/dist/core/tokenfactory/msgs/MsgUpdateTokenfactoryParams.d.ts +0 -33
  647. package/dist/core/tokenfactory/msgs/index.d.ts +0 -20
  648. package/dist/core/tx/CompactBitArray.d.ts +0 -22
  649. package/dist/core/tx/Fee.d.ts +0 -31
  650. package/dist/core/tx/MultiSignature.d.ts +0 -13
  651. package/dist/core/tx/SignDoc.d.ts +0 -36
  652. package/dist/core/tx/SignMode.d.ts +0 -3
  653. package/dist/core/tx/SignatureV2.d.ts +0 -66
  654. package/dist/core/tx/Tx.d.ts +0 -146
  655. package/dist/core/tx/TxInfo.d.ts +0 -74
  656. package/dist/core/tx/index.d.ts +0 -7
  657. package/dist/core/upgrade/Plan.d.ts +0 -27
  658. package/dist/core/upgrade/index.d.ts +0 -2
  659. package/dist/core/upgrade/msgs/MsgCancelUpgrade.d.ts +0 -29
  660. package/dist/core/upgrade/msgs/MsgSoftwareUpgrade.d.ts +0 -33
  661. package/dist/core/upgrade/msgs/index.d.ts +0 -10
  662. package/dist/core/wasm/AbsoluteTxPosition.d.ts +0 -24
  663. package/dist/core/wasm/AccessConfig.d.ts +0 -27
  664. package/dist/core/wasm/WasmParams.d.ts +0 -32
  665. package/dist/core/wasm/authorizations/AcceptedMessageKeysFilter.d.ts +0 -28
  666. package/dist/core/wasm/authorizations/AcceptedMessagesFilter.d.ts +0 -28
  667. package/dist/core/wasm/authorizations/AllowAllMessagesFilter.d.ts +0 -24
  668. package/dist/core/wasm/authorizations/CodeGrant.d.ts +0 -25
  669. package/dist/core/wasm/authorizations/CombinedLimit.d.ts +0 -32
  670. package/dist/core/wasm/authorizations/ContractExecutionAuthorization.d.ts +0 -29
  671. package/dist/core/wasm/authorizations/ContractFilter.d.ts +0 -13
  672. package/dist/core/wasm/authorizations/ContractGrant.d.ts +0 -30
  673. package/dist/core/wasm/authorizations/ContractLimit.d.ts +0 -13
  674. package/dist/core/wasm/authorizations/ContractMigrationAuthorization.d.ts +0 -29
  675. package/dist/core/wasm/authorizations/MaxCallsLimit.d.ts +0 -28
  676. package/dist/core/wasm/authorizations/MaxFundsLimit.d.ts +0 -29
  677. package/dist/core/wasm/authorizations/StoreCodeAuthorization.d.ts +0 -29
  678. package/dist/core/wasm/authorizations/index.d.ts +0 -11
  679. package/dist/core/wasm/index.d.ts +0 -5
  680. package/dist/core/wasm/msgs/MsgAddCodeUploadParamsAddresses.d.ts +0 -32
  681. package/dist/core/wasm/msgs/MsgClearAdmin.d.ts +0 -32
  682. package/dist/core/wasm/msgs/MsgExecuteContract.d.ts +0 -39
  683. package/dist/core/wasm/msgs/MsgInstantiateContract.d.ts +0 -45
  684. package/dist/core/wasm/msgs/MsgInstantiateContractV2.d.ts +0 -51
  685. package/dist/core/wasm/msgs/MsgMigrateContract.d.ts +0 -38
  686. package/dist/core/wasm/msgs/MsgPinCodes.d.ts +0 -32
  687. package/dist/core/wasm/msgs/MsgRemoveCodeUploadParamsAddresses.d.ts +0 -32
  688. package/dist/core/wasm/msgs/MsgStoreAndInstantiateContract.d.ts +0 -61
  689. package/dist/core/wasm/msgs/MsgStoreAndMigrateContract.d.ts +0 -42
  690. package/dist/core/wasm/msgs/MsgStoreCode.d.ts +0 -36
  691. package/dist/core/wasm/msgs/MsgSudoContract.d.ts +0 -35
  692. package/dist/core/wasm/msgs/MsgUnpinCodes.d.ts +0 -32
  693. package/dist/core/wasm/msgs/MsgUpdateAdmin.d.ts +0 -35
  694. package/dist/core/wasm/msgs/MsgUpdateContractLabel.d.ts +0 -35
  695. package/dist/core/wasm/msgs/MsgUpdateInstantiateConfig.d.ts +0 -36
  696. package/dist/core/wasm/msgs/MsgUpdateMaxWasmSize.d.ts +0 -32
  697. package/dist/core/wasm/msgs/MsgUpdateWasmParams.d.ts +0 -33
  698. package/dist/core/wasm/msgs/index.d.ts +0 -42
  699. package/dist/core/wasmextension/AccessConfigExt.d.ts +0 -28
  700. package/dist/core/wasmextension/index.d.ts +0 -2
  701. package/dist/core/wasmextension/msgs/MsgStoreCodeAdmin.d.ts +0 -39
  702. package/dist/core/wasmextension/msgs/index.d.ts +0 -8
  703. package/dist/index.cjs +0 -6
  704. package/dist/index.d.ts +0 -4
  705. package/dist/index.mjs +0 -103590
  706. package/dist/key/Key.d.ts +0 -20
  707. package/dist/key/MnemonicKey.d.ts +0 -14
  708. package/dist/key/RawKey.d.ts +0 -9
  709. package/dist/key/index.d.ts +0 -3
  710. package/dist/util/bcs.d.ts +0 -44
  711. package/dist/util/hash.d.ts +0 -4
  712. package/dist/util/index.d.ts +0 -3
  713. package/dist/util/json.d.ts +0 -9
@@ -0,0 +1 @@
1
+ {"version":3,"file":"waiting-BigHYRNN.mjs","names":[],"sources":["../src/client/websocket/types.ts","../src/client/websocket/cosmos-session.ts","../src/client/websocket/evm-session.ts","../src/client/websocket/session.ts","../src/client/websocket/waiting.ts"],"sourcesContent":["/**\n * WebSocket type definitions for real-time blockchain events.\n */\n\n// ============================================================================\n// Subscription Types\n// ============================================================================\n\n/**\n * Subscription handle for cleanup.\n */\nexport interface Subscription {\n /** Unique subscription ID */\n readonly id: string\n /** Unsubscribe and optionally close the connection */\n unsubscribe(): void\n}\n\n/**\n * Connection event types for monitoring WebSocket state.\n */\nexport type ConnectionEventType =\n | 'connect'\n | 'disconnect'\n | 'reconnect'\n | 'error'\n | 'maxRetriesReached'\n\n/**\n * Connection event data passed to event callbacks.\n */\nexport interface ConnectionEvent {\n /** Event type */\n type: ConnectionEventType\n /** Timestamp of the event */\n timestamp: number\n /** Reconnect attempt number (only for 'reconnect' events) */\n attempt?: number\n /** Error message (only for 'error' and 'disconnect' events) */\n error?: string\n}\n\n/**\n * Options for WebSocket session behavior.\n */\nexport interface SessionOptions {\n /**\n * Enable automatic reconnection on disconnect.\n * @default true\n */\n autoReconnect?: boolean\n\n /**\n * Maximum number of reconnection attempts.\n * Set to Infinity for unlimited retries.\n * @default Infinity\n */\n maxRetries?: number\n\n /**\n * Initial delay between reconnection attempts in milliseconds.\n * Uses exponential backoff: delay * 2^attempt\n * @default 1000\n */\n retryDelay?: number\n\n /**\n * Maximum delay between reconnection attempts in milliseconds.\n * @default 30000\n */\n maxRetryDelay?: number\n\n /**\n * Callback fired on connection events (connect, disconnect, reconnect, error).\n * Useful for monitoring and debugging.\n */\n onConnectionEvent?: (event: ConnectionEvent) => void\n}\n\n/**\n * Default session options.\n */\nexport const DEFAULT_SESSION_OPTIONS: Required<Omit<SessionOptions, 'onConnectionEvent'>> = {\n autoReconnect: true,\n maxRetries: Infinity,\n retryDelay: 1000,\n maxRetryDelay: 30000,\n}\n\n/** Default timeout for subscription confirmation (10 seconds) */\nexport const SUBSCRIPTION_TIMEOUT_MS = 10000\n\n// ============================================================================\n// Event Specification Types\n// ============================================================================\n\n/**\n * Cosmos: Subscribe to new full blocks.\n */\nexport interface BlockEventSpec {\n readonly event: 'block'\n}\n\n/**\n * Cosmos: Subscribe to new block headers (lighter than full blocks).\n */\nexport interface BlockHeaderEventSpec {\n readonly event: 'blockHeader'\n}\n\n/**\n * Cosmos: Subscribe to transactions matching a filter.\n */\nexport interface TxEventSpec {\n readonly event: 'tx'\n /** CometBFT query filter (e.g., \"transfer.recipient='init1...'\") */\n readonly filter?: string\n}\n\n/**\n * Cosmos: Subscribe to validator set changes.\n */\nexport interface ValidatorUpdatesEventSpec {\n readonly event: 'validatorUpdates'\n}\n\n/**\n * Cosmos: Subscribe with custom CometBFT query.\n */\nexport interface CosmosCustomEventSpec {\n readonly event: 'cosmosCustom'\n /** Full CometBFT query string */\n readonly query: string\n}\n\n/**\n * EVM: Subscribe to contract log events.\n */\nexport interface EvmLogsEventSpec {\n readonly event: 'evmLogs'\n /** Log filter */\n readonly filter?: {\n address?: string\n topics?: string[]\n }\n}\n\n/**\n * EVM: Subscribe to new block headers.\n */\nexport interface EvmHeadsEventSpec {\n readonly event: 'evmHeads'\n}\n\n/**\n * EVM: Subscribe to pending transactions in mempool.\n */\nexport interface EvmPendingTxsEventSpec {\n readonly event: 'evmPendingTxs'\n}\n\n/**\n * EVM: Subscribe to sync status changes.\n */\nexport interface EvmSyncingEventSpec {\n readonly event: 'evmSyncing'\n}\n\n/**\n * EVM: Subscribe with custom subscription type.\n */\nexport interface EvmCustomEventSpec {\n readonly event: 'evmCustom'\n /** Subscription type */\n readonly type: string\n /** Subscription parameters */\n readonly params?: Record<string, unknown>\n}\n\n/**\n * All Cosmos event specifications.\n */\nexport type CosmosEventSpec =\n | BlockEventSpec\n | BlockHeaderEventSpec\n | TxEventSpec\n | ValidatorUpdatesEventSpec\n | CosmosCustomEventSpec\n\n/**\n * All EVM event specifications.\n */\nexport type EvmEventSpec =\n | EvmLogsEventSpec\n | EvmHeadsEventSpec\n | EvmPendingTxsEventSpec\n | EvmSyncingEventSpec\n | EvmCustomEventSpec\n\n/**\n * Union of all event specifications.\n *\n * @example\n * ```typescript\n * // Cosmos events\n * { event: 'block' }\n * { event: 'blockHeader' }\n * { event: 'tx', filter: \"transfer.recipient='init1...'\" }\n * { event: 'validatorUpdates' }\n * { event: 'cosmosCustom', query: \"tm.event='NewBlock'\" }\n *\n * // EVM events\n * { event: 'evmLogs', filter: { address: '0x...', topics: ['0x...'] } }\n * { event: 'evmHeads' }\n * { event: 'evmPendingTxs' }\n * { event: 'evmSyncing' }\n * { event: 'evmCustom', type: 'logs', params: { ... } }\n * ```\n */\nexport type EventSpec = CosmosEventSpec | EvmEventSpec\n\n/**\n * Helper to check if an event spec is a Cosmos event.\n */\nexport function isCosmosEvent(spec: EventSpec): spec is CosmosEventSpec {\n return (\n spec.event === 'block' ||\n spec.event === 'blockHeader' ||\n spec.event === 'tx' ||\n spec.event === 'validatorUpdates' ||\n spec.event === 'cosmosCustom'\n )\n}\n\n/**\n * Helper to check if an event spec is an EVM event.\n */\nexport function isEvmEvent(spec: EventSpec): spec is EvmEventSpec {\n return (\n spec.event === 'evmLogs' ||\n spec.event === 'evmHeads' ||\n spec.event === 'evmPendingTxs' ||\n spec.event === 'evmSyncing' ||\n spec.event === 'evmCustom'\n )\n}\n\n// ============================================================================\n// Event Data Types (Loose interfaces for WebSocket JSON responses)\n// ============================================================================\n\n/**\n * Cosmos block data from WebSocket.\n * Loose interface - use generic override for strict typing.\n */\nexport interface WsBlock {\n header?: {\n height?: string\n time?: string\n chain_id?: string\n proposer_address?: string\n last_block_id?: { hash?: string }\n app_hash?: string\n [key: string]: unknown\n }\n data?: {\n txs?: string[]\n [key: string]: unknown\n }\n evidence?: unknown\n last_commit?: unknown\n [key: string]: unknown\n}\n\n/**\n * Cosmos block header data from WebSocket.\n */\nexport interface WsBlockHeader {\n height?: string\n time?: string\n chain_id?: string\n proposer_address?: string\n last_block_id?: { hash?: string }\n app_hash?: string\n [key: string]: unknown\n}\n\n/**\n * Cosmos transaction result from WebSocket.\n */\nexport interface WsTxResult {\n height?: string\n tx?: string\n result?: {\n code?: number\n data?: string\n log?: string\n gas_wanted?: string\n gas_used?: string\n events?: Array<{\n type?: string\n attributes?: Array<{ key?: string; value?: string }>\n }>\n [key: string]: unknown\n }\n [key: string]: unknown\n}\n\n/**\n * Cosmos validator updates from WebSocket.\n */\nexport interface WsValidatorUpdates {\n validator_updates?: Array<{\n pub_key?: { type?: string; value?: string }\n power?: string\n [key: string]: unknown\n }>\n [key: string]: unknown\n}\n\n/**\n * EVM log event from WebSocket.\n */\nexport interface WsEvmLog {\n address?: string\n topics?: string[]\n data?: string\n blockNumber?: string\n transactionHash?: string\n transactionIndex?: string\n blockHash?: string\n logIndex?: string\n removed?: boolean\n [key: string]: unknown\n}\n\n/**\n * EVM block header from WebSocket.\n */\nexport interface WsEvmBlockHeader {\n number?: string\n hash?: string\n parentHash?: string\n timestamp?: string\n gasLimit?: string\n gasUsed?: string\n miner?: string\n [key: string]: unknown\n}\n\n/**\n * EVM sync status from WebSocket.\n */\nexport interface WsEvmSyncStatus {\n syncing?: boolean\n status?: {\n startingBlock?: string\n currentBlock?: string\n highestBlock?: string\n [key: string]: unknown\n }\n [key: string]: unknown\n}\n\n// ============================================================================\n// Event Data Type Mapping\n// ============================================================================\n\n/**\n * Maps event types to their data types.\n * Used for type inference in subscribe methods.\n */\nexport type EventDataMap = {\n block: WsBlock\n blockHeader: WsBlockHeader\n tx: WsTxResult\n validatorUpdates: WsValidatorUpdates\n cosmosCustom: unknown\n evmLogs: WsEvmLog\n evmHeads: WsEvmBlockHeader\n evmPendingTxs: string // Transaction hash\n evmSyncing: WsEvmSyncStatus\n evmCustom: unknown\n}\n\n/**\n * Infer event data type from EventSpec.\n */\nexport type InferEventData<S extends EventSpec> = S extends { event: infer E }\n ? E extends keyof EventDataMap\n ? EventDataMap[E]\n : unknown\n : unknown\n\n// ============================================================================\n// Internal: WebSocket Response Types\n// ============================================================================\n\nexport interface CosmosWsResponse {\n id?: number\n result?: {\n query?: string\n data?: {\n value?: unknown\n }\n }\n}\n\nexport interface EvmWsResponse {\n id?: number\n result?: string\n method?: string\n params?: {\n subscription?: string\n result?: unknown\n }\n}\n\n/** Stored subscription info for resubscription after reconnect */\nexport interface EvmSubscriptionInfo {\n type: 'logs' | 'newHeads' | 'newPendingTransactions' | 'syncing'\n params: Record<string, unknown>\n callback: (data: unknown) => void\n}\n","/**\n * Internal Cosmos WebSocket session implementation.\n *\n * ## Connection State Machine\n *\n * ```\n * ┌─────────────────────────────────────────┐\n * │ │\n * ▼ │\n * ┌──────────┐ connect() ┌───────────┐ onopen ┌─────────────┐\n * │DISCONNECT├──────────────►│CONNECTING ├────────────►│ CONNECTED │\n * └──────────┘ └─────┬─────┘ └──────┬──────┘\n * ▲ │ │\n * │ onerror onclose\n * │ │ (unexpected)\n * │ ▼ │\n * │ ┌──────────┐ │\n * │ │ FAILED │ │\n * │ └──────────┘ │\n * │ ▼\n * │ maxRetries ┌──────────────┐ retryDelay ┌────────────┐\n * │◄───exceeded────────┤ RECONNECTING │◄─────────────┤ SCHEDULING │\n * │ └───────┬──────┘ └────────────┘\n * │ │\n * │ reconnect\n * │ success\n * │ │\n * │ ▼\n * │ ┌─────────────┐\n * └────user close()────┤ CONNECTED │\n * └─────────────┘\n * ```\n *\n * ## Event Flow\n *\n * 1. `connect` - Initial connection established\n * 2. `disconnect` - Connection lost (will auto-reconnect if enabled)\n * 3. `reconnect` - Successfully reconnected after disconnect\n * 4. `error` - Connection error occurred\n * 5. `maxRetriesReached` - All reconnection attempts exhausted, pending promises rejected\n *\n * ## Pending Subscription Handling\n *\n * - Subscriptions requested during disconnect are queued in `pendingSubscriptions`\n * - On `maxRetriesReached`: all pending promises are rejected with error\n * - On `close()`: all pending promises are rejected with \"Session closed\"\n */\n\nimport type { Subscription, SessionOptions, ConnectionEventType, CosmosWsResponse } from './types'\nimport { DEFAULT_SESSION_OPTIONS, SUBSCRIPTION_TIMEOUT_MS } from './types'\n\n/**\n * Internal Cosmos WebSocket session for CometBFT subscriptions.\n * @internal\n */\nexport class InternalCosmosSession {\n private ws: WebSocket | null = null\n private subscriptions: Map<string, (data: unknown) => void> = new Map()\n private messageIdCounter = 0\n private pendingSubscriptions: Map<\n number,\n { resolve: () => void; reject: (err: Error) => void; query: string }\n > = new Map()\n private isConnected = false\n private connectionPromise: Promise<void> | null = null\n private isUserClose = false\n private reconnectAttempt = 0\n private reconnectTimer: ReturnType<typeof setTimeout> | null = null\n private readonly options: Required<Omit<SessionOptions, 'onConnectionEvent'>> & {\n onConnectionEvent?: (event: {\n type: ConnectionEventType\n timestamp: number\n attempt?: number\n error?: string\n }) => void\n }\n\n constructor(\n private readonly wssUrl: string,\n options: SessionOptions = {}\n ) {\n this.options = {\n ...DEFAULT_SESSION_OPTIONS,\n onConnectionEvent: options.onConnectionEvent,\n }\n if (options.autoReconnect !== undefined) this.options.autoReconnect = options.autoReconnect\n if (options.maxRetries !== undefined) this.options.maxRetries = options.maxRetries\n if (options.retryDelay !== undefined) this.options.retryDelay = options.retryDelay\n if (options.maxRetryDelay !== undefined) this.options.maxRetryDelay = options.maxRetryDelay\n }\n\n private emitEvent(type: ConnectionEventType, extra?: { attempt?: number; error?: string }): void {\n this.options.onConnectionEvent?.({\n type,\n timestamp: Date.now(),\n ...extra,\n })\n }\n\n private async connect(): Promise<void> {\n return new Promise((resolve, reject) => {\n this.ws = new WebSocket(this.wssUrl)\n\n this.ws.onopen = () => {\n this.isConnected = true\n this.connectionPromise = null\n this.reconnectAttempt = 0\n this.emitEvent('connect')\n resolve()\n }\n\n this.ws.onerror = () => {\n this.connectionPromise = null\n const errorMsg = `WebSocket connection failed: ${this.wssUrl}`\n this.emitEvent('error', { error: errorMsg })\n reject(new Error(errorMsg))\n }\n\n this.ws.onclose = () => {\n const wasConnected = this.isConnected\n this.isConnected = false\n this.ws = null\n\n if (wasConnected && !this.isUserClose) {\n this.emitEvent('disconnect', { error: 'Connection closed unexpectedly' })\n this.scheduleReconnect()\n }\n }\n\n this.ws.onmessage = event => {\n this.handleMessage(event)\n }\n })\n }\n\n private rejectAllPending(reason: string): void {\n for (const [, pending] of this.pendingSubscriptions) {\n pending.reject(new Error(reason))\n }\n this.pendingSubscriptions.clear()\n }\n\n private scheduleReconnect(): void {\n if (!this.options.autoReconnect) return\n if (this.reconnectAttempt >= this.options.maxRetries) {\n this.rejectAllPending('Max reconnection attempts reached')\n this.emitEvent('maxRetriesReached')\n return\n }\n\n this.reconnectAttempt++\n const delay = Math.min(\n this.options.retryDelay * Math.pow(2, this.reconnectAttempt - 1),\n this.options.maxRetryDelay\n )\n\n this.emitEvent('reconnect', { attempt: this.reconnectAttempt })\n\n this.reconnectTimer = setTimeout(() => {\n void this.reconnectAndResubscribe()\n }, delay)\n }\n\n private async reconnectAndResubscribe(): Promise<void> {\n try {\n await this.connect()\n // Re-subscribe all existing subscriptions\n this.resubscribeAll()\n } catch {\n // connect() already handles next reconnect attempt via onclose\n }\n }\n\n private resubscribeAll(): void {\n // Re-subscribe all existing subscriptions after reconnect.\n // Fire-and-forget: we don't await confirmation during reconnect\n // since callbacks are already registered in this.subscriptions.\n const queries = Array.from(this.subscriptions.keys())\n for (const query of queries) {\n const messageId = ++this.messageIdCounter\n this.ws?.send(\n JSON.stringify({\n jsonrpc: '2.0',\n method: 'subscribe',\n id: messageId,\n params: [query],\n })\n )\n }\n }\n\n private async ensureConnected(): Promise<void> {\n if (this.isConnected && this.ws) {\n return\n }\n\n if (this.connectionPromise) {\n return this.connectionPromise\n }\n\n this.connectionPromise = this.connect()\n return this.connectionPromise\n }\n\n private handleMessage(event: MessageEvent): void {\n try {\n const data = JSON.parse(event.data as string) as CosmosWsResponse\n\n // Handle event data (has query and data fields)\n if (data.result?.query && data.result?.data?.value) {\n const query = data.result.query\n const callback = this.subscriptions.get(query)\n if (callback) {\n callback(data.result.data.value)\n }\n return\n }\n\n // Handle subscription confirmation (empty result object)\n if (data.id !== undefined && data.result !== undefined) {\n const pending = this.pendingSubscriptions.get(data.id)\n if (pending) {\n this.pendingSubscriptions.delete(data.id)\n pending.resolve()\n }\n return\n }\n } catch {\n // Ignore parse errors\n }\n }\n\n async subscribe(query: string, callback: (data: unknown) => void): Promise<Subscription> {\n await this.ensureConnected()\n\n const messageId = ++this.messageIdCounter\n const subscriptionId = `cosmos-${messageId}-${Date.now()}`\n\n // Wait for subscription confirmation with timeout\n await new Promise<void>((resolve, reject) => {\n this.pendingSubscriptions.set(messageId, { resolve, reject, query })\n\n this.ws!.send(\n JSON.stringify({\n jsonrpc: '2.0',\n method: 'subscribe',\n id: messageId,\n params: [query],\n })\n )\n\n setTimeout(() => {\n if (this.pendingSubscriptions.has(messageId)) {\n this.pendingSubscriptions.delete(messageId)\n reject(new Error(`Subscription confirmation timeout for query: ${query}`))\n }\n }, SUBSCRIPTION_TIMEOUT_MS)\n })\n\n this.subscriptions.set(query, callback)\n\n return {\n id: subscriptionId,\n unsubscribe: () => {\n this.subscriptions.delete(query)\n if (this.ws && this.isConnected) {\n this.ws.send(\n JSON.stringify({\n jsonrpc: '2.0',\n method: 'unsubscribe',\n id: ++this.messageIdCounter,\n params: [query],\n })\n )\n }\n },\n }\n }\n\n get connected(): boolean {\n return this.isConnected\n }\n\n get subscriptionCount(): number {\n return this.subscriptions.size\n }\n\n close(): void {\n this.isUserClose = true\n if (this.reconnectTimer) {\n clearTimeout(this.reconnectTimer)\n this.reconnectTimer = null\n }\n this.subscriptions.clear()\n this.rejectAllPending('Session closed')\n if (this.ws) {\n this.ws.close()\n this.ws = null\n }\n this.isConnected = false\n }\n}\n","/**\n * Internal EVM WebSocket session implementation.\n *\n * ## Connection State Machine\n *\n * See cosmos-session.ts for the full state diagram.\n * EVM session follows the same reconnection state machine:\n *\n * DISCONNECTED → CONNECTING → CONNECTED ↔ RECONNECTING → MAX_RETRIES\n *\n * ## Event Flow\n *\n * 1. `connect` - Initial connection established\n * 2. `disconnect` - Connection lost (will auto-reconnect if enabled)\n * 3. `reconnect` - Successfully reconnected after disconnect\n * 4. `error` - Connection error occurred\n * 5. `maxRetriesReached` - All reconnection attempts exhausted, pending promises rejected\n *\n * ## Pending Subscription Handling\n *\n * - Subscriptions requested during disconnect are queued in `pendingSubscriptions`\n * - On `maxRetriesReached`: all pending promises are rejected with error\n * - On `close()`: all pending promises are rejected with \"Session closed\"\n */\n\nimport type {\n Subscription,\n SessionOptions,\n ConnectionEventType,\n EvmWsResponse,\n EvmSubscriptionInfo,\n} from './types'\nimport { DEFAULT_SESSION_OPTIONS, SUBSCRIPTION_TIMEOUT_MS } from './types'\n\n/**\n * Internal EVM WebSocket session for Ethereum-compatible subscriptions.\n * @internal\n */\nexport class InternalEvmSession {\n private ws: WebSocket | null = null\n private subscriptions: Map<string, (data: unknown) => void> = new Map()\n /** Stored subscription info for resubscription */\n private subscriptionInfo: Map<string, EvmSubscriptionInfo> = new Map()\n private messageIdCounter = 0\n private pendingSubscriptions: Map<\n number,\n { resolve: (id: string) => void; reject: (err: Error) => void }\n > = new Map()\n private isConnected = false\n private connectionPromise: Promise<void> | null = null\n private isUserClose = false\n private reconnectAttempt = 0\n private reconnectTimer: ReturnType<typeof setTimeout> | null = null\n private readonly options: Required<Omit<SessionOptions, 'onConnectionEvent'>> & {\n onConnectionEvent?: (event: {\n type: ConnectionEventType\n timestamp: number\n attempt?: number\n error?: string\n }) => void\n }\n\n constructor(\n private readonly wssUrl: string,\n options: SessionOptions = {}\n ) {\n this.options = {\n ...DEFAULT_SESSION_OPTIONS,\n onConnectionEvent: options.onConnectionEvent,\n }\n if (options.autoReconnect !== undefined) this.options.autoReconnect = options.autoReconnect\n if (options.maxRetries !== undefined) this.options.maxRetries = options.maxRetries\n if (options.retryDelay !== undefined) this.options.retryDelay = options.retryDelay\n if (options.maxRetryDelay !== undefined) this.options.maxRetryDelay = options.maxRetryDelay\n }\n\n private emitEvent(type: ConnectionEventType, extra?: { attempt?: number; error?: string }): void {\n this.options.onConnectionEvent?.({\n type,\n timestamp: Date.now(),\n ...extra,\n })\n }\n\n private async connect(): Promise<void> {\n return new Promise((resolve, reject) => {\n this.ws = new WebSocket(this.wssUrl)\n\n this.ws.onopen = () => {\n this.isConnected = true\n this.connectionPromise = null\n this.reconnectAttempt = 0\n this.emitEvent('connect')\n resolve()\n }\n\n this.ws.onerror = () => {\n this.connectionPromise = null\n const errorMsg = `WebSocket connection failed: ${this.wssUrl}`\n this.emitEvent('error', { error: errorMsg })\n reject(new Error(errorMsg))\n }\n\n this.ws.onclose = () => {\n const wasConnected = this.isConnected\n this.isConnected = false\n this.ws = null\n\n if (wasConnected && !this.isUserClose) {\n this.emitEvent('disconnect', { error: 'Connection closed unexpectedly' })\n this.scheduleReconnect()\n }\n }\n\n this.ws.onmessage = event => {\n this.handleMessage(event)\n }\n })\n }\n\n private rejectAllPending(reason: string): void {\n for (const [, pending] of this.pendingSubscriptions) {\n pending.reject(new Error(reason))\n }\n this.pendingSubscriptions.clear()\n }\n\n private scheduleReconnect(): void {\n if (!this.options.autoReconnect) return\n if (this.reconnectAttempt >= this.options.maxRetries) {\n this.rejectAllPending('Max reconnection attempts reached')\n this.emitEvent('maxRetriesReached')\n return\n }\n\n this.reconnectAttempt++\n const delay = Math.min(\n this.options.retryDelay * Math.pow(2, this.reconnectAttempt - 1),\n this.options.maxRetryDelay\n )\n\n this.emitEvent('reconnect', { attempt: this.reconnectAttempt })\n\n this.reconnectTimer = setTimeout(() => {\n void this.reconnectAndResubscribe()\n }, delay)\n }\n\n private async reconnectAndResubscribe(): Promise<void> {\n try {\n await this.connect()\n // Re-subscribe all existing subscriptions\n await this.resubscribeAll()\n } catch {\n // connect() already handles next reconnect attempt via onclose\n }\n }\n\n private async resubscribeAll(): Promise<void> {\n // Store old subscription info and clear current mappings\n const oldInfos = new Map(this.subscriptionInfo)\n this.subscriptions.clear()\n this.subscriptionInfo.clear()\n\n for (const [, info] of oldInfos) {\n try {\n await this.subscribe(info.type, info.params, info.callback)\n } catch {\n // Subscription failed, will be retried on next reconnect\n }\n }\n }\n\n private async ensureConnected(): Promise<void> {\n if (this.isConnected && this.ws) {\n return\n }\n\n if (this.connectionPromise) {\n return this.connectionPromise\n }\n\n this.connectionPromise = this.connect()\n return this.connectionPromise\n }\n\n private handleMessage(event: MessageEvent): void {\n try {\n const data = JSON.parse(event.data as string) as EvmWsResponse\n\n if (data.id !== undefined && data.result !== undefined) {\n const pending = this.pendingSubscriptions.get(data.id)\n if (pending) {\n pending.resolve(data.result)\n this.pendingSubscriptions.delete(data.id)\n }\n return\n }\n\n if (data.method === 'eth_subscription' && data.params?.subscription) {\n const callback = this.subscriptions.get(data.params.subscription)\n if (callback) {\n callback(data.params.result)\n }\n }\n } catch {\n // Ignore parse errors\n }\n }\n\n async subscribe(\n type: 'logs' | 'newHeads' | 'newPendingTransactions' | 'syncing',\n params: Record<string, unknown>,\n callback: (data: unknown) => void\n ): Promise<Subscription> {\n await this.ensureConnected()\n\n const messageId = ++this.messageIdCounter\n const subscribeParams: unknown[] = type === 'logs' ? [type, params] : [type]\n\n const subscriptionId = await new Promise<string>((resolve, reject) => {\n this.pendingSubscriptions.set(messageId, { resolve, reject })\n\n this.ws!.send(\n JSON.stringify({\n jsonrpc: '2.0',\n method: 'eth_subscribe',\n id: messageId,\n params: subscribeParams,\n })\n )\n\n setTimeout(() => {\n if (this.pendingSubscriptions.has(messageId)) {\n this.pendingSubscriptions.delete(messageId)\n reject(new Error('Subscription confirmation timeout'))\n }\n }, SUBSCRIPTION_TIMEOUT_MS)\n })\n\n this.subscriptions.set(subscriptionId, callback)\n this.subscriptionInfo.set(subscriptionId, { type, params, callback })\n\n return {\n id: subscriptionId,\n unsubscribe: () => {\n this.subscriptions.delete(subscriptionId)\n this.subscriptionInfo.delete(subscriptionId)\n if (this.ws && this.isConnected) {\n this.ws.send(\n JSON.stringify({\n jsonrpc: '2.0',\n method: 'eth_unsubscribe',\n id: ++this.messageIdCounter,\n params: [subscriptionId],\n })\n )\n }\n },\n }\n }\n\n get connected(): boolean {\n return this.isConnected\n }\n\n get subscriptionCount(): number {\n return this.subscriptions.size\n }\n\n close(): void {\n this.isUserClose = true\n if (this.reconnectTimer) {\n clearTimeout(this.reconnectTimer)\n this.reconnectTimer = null\n }\n this.subscriptions.clear()\n this.subscriptionInfo.clear()\n this.rejectAllPending('Session closed')\n if (this.ws) {\n this.ws.close()\n this.ws = null\n }\n this.isConnected = false\n }\n}\n","/**\n * Unified WebSocket session for managing subscriptions to both Cosmos and EVM events.\n */\n\nimport type { ChainInfo } from '../../provider/types'\nimport { WebSocketNotAvailableError } from '../../errors'\nimport type {\n Subscription,\n SessionOptions,\n EventSpec,\n CosmosEventSpec,\n EvmEventSpec,\n InferEventData,\n} from './types'\nimport { isCosmosEvent } from './types'\nimport { InternalCosmosSession } from './cosmos-session'\nimport { InternalEvmSession } from './evm-session'\n\n// Re-export for convenience\nexport { WebSocketNotAvailableError }\n\n/**\n * Unified WebSocket session for managing subscriptions to both Cosmos and EVM events.\n *\n * Lazily creates connections to the appropriate WebSocket based on the event type.\n * For minievm chains, a single session can manage both Cosmos and EVM subscriptions.\n *\n * Features:\n * - **Auto-reconnect**: Automatically reconnects on disconnect with exponential backoff (default: enabled)\n * - **Re-subscription**: All subscriptions are automatically restored after reconnection\n * - **Connection events**: Optional callback for monitoring connection state changes\n *\n * @example Basic usage\n * ```typescript\n * const session = createSession(chainInfo)\n *\n * // Subscribe to Cosmos events (uses wss endpoint)\n * const blockSub = await session.subscribe({ event: 'block' }, (block) => {\n * console.log('New block:', block)\n * })\n *\n * // Subscribe to EVM events (uses evmWss endpoint)\n * const logSub = await session.subscribe({\n * event: 'evmLogs',\n * filter: { address: '0x...' }\n * }, (log) => {\n * console.log('EVM log:', log)\n * })\n *\n * // Check connection status\n * console.log('Cosmos connected:', session.cosmosConnected)\n * console.log('EVM connected:', session.evmConnected)\n *\n * // Cleanup all connections\n * session.close()\n * ```\n *\n * @example With connection monitoring\n * ```typescript\n * const session = createSession(chainInfo, {\n * onConnectionEvent: (event) => {\n * console.log(`[${event.type}] at ${new Date(event.timestamp).toISOString()}`)\n * if (event.type === 'reconnect') {\n * console.log(` Attempt #${event.attempt}`)\n * }\n * if (event.error) {\n * console.log(` Error: ${event.error}`)\n * }\n * }\n * })\n * ```\n *\n * @example Disable auto-reconnect\n * ```typescript\n * const session = createSession(chainInfo, { autoReconnect: false })\n * ```\n */\nexport class WebSocketSession {\n private cosmosSession?: InternalCosmosSession\n private evmSession?: InternalEvmSession\n\n constructor(\n private readonly chainInfo: ChainInfo,\n private readonly options: SessionOptions = {}\n ) {}\n\n /**\n * Subscribe to blockchain events.\n *\n * Automatically routes to the appropriate WebSocket based on event type.\n * Event data type is inferred from the event spec. Use generic parameter\n * to override with a custom type.\n *\n * @typeParam T - Optional custom type override for event data\n * @param spec - Event specification\n * @param callback - Function called for each event with inferred or custom type\n * @returns Subscription handle\n *\n * @example Default type inference\n * ```typescript\n * session.subscribe({ event: 'block' }, (block) => {\n * console.log(block.header?.height) // WsBlock type inferred\n * })\n * ```\n *\n * @example Custom type override\n * ```typescript\n * interface MyBlock { header: { height: string } }\n * session.subscribe<MyBlock>({ event: 'block' }, (block) => {\n * console.log(block.header.height) // MyBlock type used\n * })\n * ```\n */\n async subscribe<T = undefined, S extends EventSpec = EventSpec>(\n spec: S,\n callback: (data: T extends undefined ? InferEventData<S> : T) => void\n ): Promise<Subscription> {\n if (isCosmosEvent(spec)) {\n return this.subscribeCosmos(spec, callback as (data: unknown) => void)\n } else {\n return this.subscribeEvm(spec, callback as (data: unknown) => void)\n }\n }\n\n private async subscribeCosmos(\n spec: CosmosEventSpec,\n callback: (data: unknown) => void\n ): Promise<Subscription> {\n // Lazy initialization\n if (!this.cosmosSession) {\n if (!this.chainInfo.wss) {\n throw new WebSocketNotAvailableError(this.chainInfo.chainId)\n }\n this.cosmosSession = new InternalCosmosSession(this.chainInfo.wss, this.options)\n }\n\n // Build query and data extractor\n let query: string\n let dataExtractor: (data: unknown) => unknown = data => data\n\n switch (spec.event) {\n case 'block':\n query = \"tm.event='NewBlock'\"\n dataExtractor = data => {\n const value = data as { block?: unknown }\n return value.block ?? data\n }\n break\n case 'blockHeader':\n query = \"tm.event='NewBlockHeader'\"\n dataExtractor = data => {\n const value = data as { header?: unknown }\n return value.header ?? data\n }\n break\n case 'tx':\n query = spec.filter ? `tm.event='Tx' AND ${spec.filter}` : \"tm.event='Tx'\"\n dataExtractor = data => {\n const value = data as { TxResult?: unknown }\n return value.TxResult ?? data\n }\n break\n case 'validatorUpdates':\n query = \"tm.event='ValidatorSetUpdates'\"\n break\n case 'cosmosCustom':\n query = spec.query\n break\n }\n\n return this.cosmosSession.subscribe(query, data => {\n callback(dataExtractor(data))\n })\n }\n\n private async subscribeEvm(\n spec: EvmEventSpec,\n callback: (data: unknown) => void\n ): Promise<Subscription> {\n // Lazy initialization\n if (!this.evmSession) {\n const evmWss = this.chainInfo.evmWss\n if (!evmWss) {\n throw new WebSocketNotAvailableError(this.chainInfo.chainId)\n }\n this.evmSession = new InternalEvmSession(evmWss, this.options)\n }\n\n // Build subscription parameters\n let type: 'logs' | 'newHeads' | 'newPendingTransactions' | 'syncing'\n let params: Record<string, unknown> = {}\n\n switch (spec.event) {\n case 'evmLogs':\n type = 'logs'\n params = spec.filter ?? {}\n break\n case 'evmHeads':\n type = 'newHeads'\n break\n case 'evmPendingTxs':\n type = 'newPendingTransactions'\n break\n case 'evmSyncing':\n type = 'syncing'\n break\n case 'evmCustom':\n type = spec.type as typeof type\n params = spec.params ?? {}\n break\n }\n\n return this.evmSession.subscribe(type, params, callback)\n }\n\n /**\n * Check if Cosmos WebSocket endpoint is available.\n */\n get hasCosmosEndpoint(): boolean {\n return !!this.chainInfo.wss\n }\n\n /**\n * Check if EVM WebSocket endpoint is available.\n */\n get hasEvmEndpoint(): boolean {\n return !!this.chainInfo.evmWss\n }\n\n /**\n * Check if Cosmos WebSocket is currently connected.\n */\n get cosmosConnected(): boolean {\n return this.cosmosSession?.connected ?? false\n }\n\n /**\n * Check if EVM WebSocket is currently connected.\n */\n get evmConnected(): boolean {\n return this.evmSession?.connected ?? false\n }\n\n /**\n * Get total number of active subscriptions across all connections.\n */\n get subscriptionCount(): number {\n return (this.cosmosSession?.subscriptionCount ?? 0) + (this.evmSession?.subscriptionCount ?? 0)\n }\n\n /**\n * Close all WebSocket connections and subscriptions.\n */\n close(): void {\n this.cosmosSession?.close()\n this.evmSession?.close()\n this.cosmosSession = undefined\n this.evmSession = undefined\n }\n}\n\n// ============================================================================\n// Factory Functions\n// ============================================================================\n\n/**\n * Create a WebSocket session for subscribing to blockchain events.\n *\n * The session lazily connects to the appropriate WebSocket (Cosmos or EVM)\n * based on the events you subscribe to.\n *\n * **Auto-reconnect behavior** (enabled by default):\n * - Automatically reconnects when connection drops unexpectedly\n * - Uses exponential backoff: 1s, 2s, 4s, 8s... up to 30s max\n * - Re-subscribes all existing subscriptions after reconnection\n * - Disable with `{ autoReconnect: false }` for manual control\n *\n * @param chainInfo - Chain configuration\n * @param options - Session options (auto-reconnect, connection events)\n * @returns WebSocketSession instance\n *\n * @example Basic usage\n * ```typescript\n * const session = createSession(chainInfo)\n *\n * // Mixed Cosmos and EVM subscriptions (for minievm chains)\n * await session.subscribe({ event: 'block' }, onBlock)\n * await session.subscribe({ event: 'evmLogs', filter: {...} }, onLog)\n *\n * session.close()\n * ```\n *\n * @example With connection monitoring\n * ```typescript\n * const session = createSession(chainInfo, {\n * onConnectionEvent: (event) => {\n * if (event.type === 'disconnect') {\n * console.warn('WebSocket disconnected:', event.error)\n * } else if (event.type === 'reconnect') {\n * console.log(`Reconnecting... (attempt ${event.attempt})`)\n * } else if (event.type === 'connect') {\n * console.log('WebSocket connected')\n * }\n * }\n * })\n * ```\n *\n * @example Custom reconnect settings\n * ```typescript\n * const session = createSession(chainInfo, {\n * autoReconnect: true,\n * maxRetries: 10, // Give up after 10 attempts\n * retryDelay: 2000, // Start with 2s delay\n * maxRetryDelay: 60000, // Cap at 60s\n * })\n * ```\n */\nexport function createSession(chainInfo: ChainInfo, options?: SessionOptions): WebSocketSession {\n return new WebSocketSession(chainInfo, options)\n}\n\n// ============================================================================\n// Standalone Subscribe Function\n// ============================================================================\n\n/**\n * Subscribe to blockchain events with automatic session management.\n *\n * Creates a temporary session for the subscription and closes it when unsubscribed.\n * For multiple subscriptions, use `createSession()` for better efficiency.\n *\n * Event data type is inferred from the event spec. Use generic parameter\n * to override with a custom type.\n *\n * @typeParam T - Optional custom type override for event data\n * @param chainInfo - Chain configuration\n * @param spec - Event specification\n * @param callback - Function called for each event with inferred or custom type\n * @returns Subscription handle\n *\n * @example Default type inference\n * ```typescript\n * const sub = await subscribe(chainInfo, { event: 'block' }, (block) => {\n * console.log('New block:', block.header?.height) // WsBlock inferred\n * })\n * ```\n *\n * @example Custom type override\n * ```typescript\n * interface MyBlock { header: { height: string } }\n * const sub = await subscribe<MyBlock>(chainInfo, { event: 'block' }, (block) => {\n * console.log('New block:', block.header.height) // MyBlock used\n * })\n * ```\n */\nexport async function subscribe<T = undefined, S extends EventSpec = EventSpec>(\n chainInfo: ChainInfo,\n spec: S,\n callback: (data: T extends undefined ? InferEventData<S> : T) => void\n): Promise<Subscription> {\n const session = createSession(chainInfo)\n const sub = await session.subscribe(spec, callback as (data: unknown) => void)\n\n return {\n id: sub.id,\n unsubscribe: () => {\n sub.unsubscribe()\n session.close()\n },\n }\n}\n\n// ============================================================================\n// Utility Functions\n// ============================================================================\n\n/**\n * Check if WebSocket endpoint is available for the chain.\n *\n * @param chainInfo - Chain configuration\n * @param type - Endpoint type to check (default: 'cosmos')\n * @returns true if the endpoint is available\n *\n * @example\n * ```typescript\n * if (hasWebSocketEndpoint(chainInfo)) {\n * // Cosmos WS available\n * }\n *\n * if (hasWebSocketEndpoint(chainInfo, 'evm')) {\n * // EVM WS available (minievm chains)\n * }\n * ```\n */\nexport function hasWebSocketEndpoint(\n chainInfo: ChainInfo,\n type: 'cosmos' | 'evm' = 'cosmos'\n): boolean {\n return type === 'cosmos' ? !!chainInfo.wss : !!chainInfo.evmWss\n}\n","/**\n * Transaction and event waiting utilities using WebSocket or polling.\n */\n\nimport type { Numeric } from '../../types'\nimport type { ChainInfo } from '../../provider/types'\nimport { TimeoutError } from '../../errors'\nimport type { Subscription, WsTxResult } from './types'\nimport { createSession, type WebSocketSession } from './session'\nimport {\n DEFAULT_TX_TIMEOUT_MS,\n DEFAULT_EVENT_TIMEOUT_MS,\n DEFAULT_POLL_INTERVAL_MS,\n} from '../../constants'\n\n// ============================================================================\n// Transaction Waiting Types\n// ============================================================================\n\n/**\n * Options for waitForTx.\n */\nexport interface WaitForTxOptions {\n /** Timeout in milliseconds (default: 30000) */\n timeout?: number\n /** Poll interval in milliseconds for polling fallback (default: 1000) */\n pollInterval?: number\n /**\n * Chain info for WebSocket-based waiting.\n * If provided and chain has wss endpoint, uses WebSocket for efficiency.\n * Falls back to polling if WebSocket unavailable or connection fails.\n */\n chainInfo?: ChainInfo\n}\n\n/**\n * Transaction result returned by waitForTx.\n */\nexport interface TxResult {\n /** Block height where tx was included */\n height: bigint\n /** Transaction hash */\n txHash: string\n /** Response code (0 = success) */\n code: number\n /** Raw log output */\n rawLog: string\n /** Gas used by the transaction */\n gasUsed: bigint\n /** Gas wanted by the transaction */\n gasWanted: bigint\n /** Parsed events from the transaction */\n events: TxEvent[]\n}\n\n/**\n * Event from a transaction.\n */\nexport interface TxEvent {\n /** Event type (e.g., 'transfer', 'message') */\n type: string\n /** Event attributes */\n attributes: Array<{ key: string; value: string }>\n}\n\n/**\n * Minimal client interface for querying transactions.\n */\nexport interface TxQueryClient {\n tx: {\n getTx(request: { hash: string }): Promise<{\n txResponse?: {\n height: bigint\n txhash: string\n code: number\n rawLog: string\n gasUsed: bigint\n gasWanted: bigint\n events: Array<{\n type: string\n attributes: Array<{ key: string; value: string }>\n }>\n }\n }>\n }\n}\n\n// ============================================================================\n// Event Waiting Types\n// ============================================================================\n\n/**\n * Options for waitForEvent.\n */\nexport interface WaitForEventOptions {\n /** Timeout in milliseconds (default: 60000) */\n timeout?: number\n /** Poll interval in milliseconds for fallback mode (default: 1000) */\n pollInterval?: number\n /**\n * Chain info for WebSocket-based waiting.\n * If provided and chain has wss endpoint, uses WebSocket for real-time events.\n * Falls back to polling if WebSocket unavailable or connection fails.\n */\n chainInfo?: ChainInfo\n /**\n * Start searching from this block height (inclusive).\n * Uses CometBFT query syntax: `tx.height >= fromHeight`\n */\n fromHeight?: Numeric\n /**\n * Maximum number of matching transactions to return.\n * @default 100\n */\n maxResults?: number\n}\n\n/**\n * Event filter criteria.\n *\n * Matches transactions containing events with the specified type and attributes.\n *\n * @example\n * ```typescript\n * // Match any transfer event\n * { type: 'transfer' }\n *\n * // Match transfer to specific recipient\n * { type: 'transfer', attributes: { recipient: 'init1...' } }\n *\n * // Match message action\n * { type: 'message', attributes: { action: '/cosmos.bank.v1beta1.MsgSend' } }\n * ```\n */\nexport interface EventFilter {\n /** Event type (e.g., 'transfer', 'message') */\n type: string\n /** Attribute key-value pairs to match */\n attributes?: Record<string, string>\n}\n\n/**\n * Minimal client interface for searching transactions by events.\n */\nexport interface TxSearchClient extends TxQueryClient {\n tx: TxQueryClient['tx'] & {\n getTxsEvent(request: {\n query: string\n page?: bigint\n limit?: bigint\n orderBy?: number\n }): Promise<{\n txs: unknown[]\n txResponses: Array<{\n height: bigint\n txhash: string\n code: number\n rawLog: string\n gasUsed: bigint\n gasWanted: bigint\n events: Array<{\n type: string\n attributes: Array<{ key: string; value: string }>\n }>\n }>\n total: bigint\n }>\n }\n}\n\n// ============================================================================\n// Internal Helpers\n// ============================================================================\n\n/** Internal: Format raw tx response to TxResult */\nfunction formatTxResult(tx: {\n height: bigint\n txhash: string\n code: number\n rawLog: string\n gasUsed: bigint\n gasWanted: bigint\n events: Array<{\n type: string\n attributes: Array<{ key: string; value: string }>\n }>\n}): TxResult {\n return {\n height: tx.height,\n txHash: tx.txhash,\n code: tx.code,\n rawLog: tx.rawLog,\n gasUsed: tx.gasUsed,\n gasWanted: tx.gasWanted,\n events: tx.events.map(e => ({\n type: e.type,\n attributes: e.attributes.map(a => ({\n key: a.key,\n value: a.value,\n })),\n })),\n }\n}\n\n/** Internal: Query transaction from client */\nasync function queryTx(client: TxQueryClient, txHash: string): Promise<TxResult | null> {\n try {\n const response = await client.tx.getTx({ hash: txHash })\n if (response.txResponse) {\n return formatTxResult(response.txResponse)\n }\n } catch {\n // Transaction not found\n }\n return null\n}\n\n// ============================================================================\n// waitForTx\n// ============================================================================\n\n/**\n * Wait for a transaction to be included in a block.\n *\n * **Strategy selection:**\n * - If `chainInfo` is provided and has WebSocket endpoint → uses WebSocket\n * - Otherwise → uses polling\n *\n * **WebSocket mode** (recommended for fast chains):\n * - Subscribes to new blocks and queries tx on each block\n * - Uses \"Subscribe First, Query After\" pattern to avoid race conditions\n * - Falls back to polling if WebSocket connection fails\n *\n * **Polling mode**:\n * - Queries tx at regular intervals until found or timeout\n *\n * @param client - gRPC client with tx service\n * @param txHash - Transaction hash to wait for\n * @param options - Wait options (timeout, pollInterval, chainInfo)\n * @returns Transaction result when found\n * @throws {TimeoutError} If the transaction is not found within the timeout\n *\n * @example Polling mode (basic)\n * ```typescript\n * const txResult = await waitForTx(client, txHash)\n * ```\n *\n * @example WebSocket mode (recommended)\n * ```typescript\n * const txResult = await waitForTx(client, txHash, { chainInfo })\n * ```\n *\n * @example Via ChainContext (automatic WebSocket)\n * ```typescript\n * const result = await ctx.signAndBroadcast(msgs)\n * const txResult = await ctx.waitForTx(result.txHash)\n * ```\n */\nexport async function waitForTx(\n client: TxQueryClient,\n txHash: string,\n options: WaitForTxOptions = {}\n): Promise<TxResult> {\n // Use WebSocket if chainInfo with wss endpoint is provided\n if (options.chainInfo?.wss) {\n try {\n return await waitForTxWebSocket(client, txHash, options.chainInfo, options)\n } catch (error) {\n // If WebSocket fails (not timeout), fallback to polling\n if (error instanceof TimeoutError) {\n throw error\n }\n // WebSocket connection failed, fallback to polling\n }\n }\n\n // Fallback to polling\n return waitForTxPolling(client, txHash, options)\n}\n\n/**\n * Internal: WebSocket-based waitForTx implementation.\n *\n * Uses \"Subscribe First, Query After\" pattern:\n * 1. Subscribe to block events first (guarantees future blocks)\n * 2. Query for existing tx after subscription established\n * 3. This avoids race condition where tx is included during subscription setup\n */\nasync function waitForTxWebSocket(\n client: TxQueryClient,\n txHash: string,\n chainInfo: ChainInfo,\n options: WaitForTxOptions\n): Promise<TxResult> {\n const timeout = options.timeout ?? DEFAULT_TX_TIMEOUT_MS\n\n return new Promise((resolve, reject) => {\n let resolved = false\n let session: WebSocketSession | null = null\n let sub: Subscription | null = null\n let timer: ReturnType<typeof setTimeout> | null = null\n\n const cleanup = () => {\n if (timer) {\n clearTimeout(timer)\n timer = null\n }\n if (sub) {\n sub.unsubscribe()\n sub = null\n }\n if (session) {\n session.close()\n session = null\n }\n }\n\n const complete = (result: TxResult) => {\n if (resolved) return\n resolved = true\n cleanup()\n resolve(result)\n }\n\n const fail = (error: Error) => {\n if (resolved) return\n resolved = true\n cleanup()\n reject(error)\n }\n\n // Set timeout\n timer = setTimeout(() => {\n fail(new TimeoutError(`waitForTx(${txHash})`, timeout))\n }, timeout)\n\n // Start async flow\n const execute = async () => {\n // Phase 1: Subscribe to blocks FIRST (guarantees we catch future blocks)\n session = createSession(chainInfo, { autoReconnect: false })\n\n sub = await session.subscribe({ event: 'block' }, () => {\n if (resolved) return\n // Query for tx on each new block\n void queryTx(client, txHash).then(result => {\n if (result && !resolved) {\n complete(result)\n }\n })\n })\n\n // Phase 2: After subscription established, check if tx already exists\n // This handles the race condition where tx was included before we subscribed\n if (resolved) return\n\n const existing = await queryTx(client, txHash)\n if (existing && !resolved) {\n complete(existing)\n }\n }\n\n execute().catch(fail)\n })\n}\n\n/**\n * Internal: Polling-based waitForTx implementation.\n */\nasync function waitForTxPolling(\n client: TxQueryClient,\n txHash: string,\n options: WaitForTxOptions\n): Promise<TxResult> {\n const timeout = options.timeout ?? DEFAULT_TX_TIMEOUT_MS\n const pollInterval = options.pollInterval ?? DEFAULT_POLL_INTERVAL_MS\n const startTime = Date.now()\n\n while (true) {\n // Check timeout\n if (Date.now() - startTime > timeout) {\n throw new TimeoutError(`waitForTx(${txHash})`, timeout)\n }\n\n const result = await queryTx(client, txHash)\n if (result) {\n return result\n }\n\n // Wait before next poll\n await new Promise(r => setTimeout(r, pollInterval))\n }\n}\n\n// ============================================================================\n// Event Query Utilities\n// ============================================================================\n\n/**\n * Build CometBFT query string from EventFilter.\n *\n * @param filter - Event filter criteria\n * @param fromHeight - Optional minimum block height\n * @returns CometBFT query string\n *\n * @example\n * ```typescript\n * buildEventQuery({ type: 'transfer', attributes: { recipient: 'init1...' } })\n * // => \"transfer.recipient='init1...'\"\n *\n * buildEventQuery({ type: 'transfer' }, 1000n)\n * // => \"tx.height>=1000\"\n * ```\n */\nexport function buildEventQuery(filter: EventFilter, fromHeight?: Numeric): string {\n const conditions: string[] = []\n\n // Add attribute conditions\n if (filter.attributes) {\n for (const [key, value] of Object.entries(filter.attributes)) {\n // CometBFT query format: event_type.attribute_key='value'\n conditions.push(`${filter.type}.${key}='${value}'`)\n }\n }\n\n // If no attributes, use a tx.height query to get all transactions\n // We'll filter by event type later\n if (conditions.length === 0) {\n conditions.push('tx.height>0')\n }\n\n // Add height filter\n if (fromHeight !== undefined) {\n conditions.push(`tx.height>=${fromHeight}`)\n }\n\n return conditions.join(' AND ')\n}\n\n/**\n * Check if a TxResult matches the given EventFilter.\n *\n * @param tx - Transaction result to check\n * @param filter - Event filter criteria\n * @returns true if the transaction contains a matching event\n */\nexport function matchesEventFilter(tx: TxResult, filter: EventFilter): boolean {\n for (const event of tx.events) {\n // Check event type\n if (event.type !== filter.type) {\n continue\n }\n\n // If no attributes required, type match is enough\n if (!filter.attributes || Object.keys(filter.attributes).length === 0) {\n return true\n }\n\n // Check all required attributes\n const attrMap = new Map(event.attributes.map(a => [a.key, a.value]))\n let allMatch = true\n\n for (const [key, value] of Object.entries(filter.attributes)) {\n if (attrMap.get(key) !== value) {\n allMatch = false\n break\n }\n }\n\n if (allMatch) {\n return true\n }\n }\n\n return false\n}\n\n// ============================================================================\n// waitForEvent\n// ============================================================================\n\n/**\n * Wait for transactions containing events that match the filter criteria.\n *\n * **Strategy selection:**\n * - If `chainInfo` is provided and has WebSocket endpoint → uses WebSocket for real-time events\n * - Otherwise → uses polling via `getTxsEvent` gRPC\n *\n * **WebSocket mode** (recommended for waiting on future events):\n * - Subscribes to new transactions first\n * - Queries historical transactions from `fromHeight`\n * - Combines results in ascending height order\n *\n * **Polling mode**:\n * - Queries `getTxsEvent` at regular intervals\n * - Filters results by event type/attributes\n *\n * @param client - gRPC client with tx service (must support getTxsEvent)\n * @param filter - Event filter criteria\n * @param options - Wait options (timeout, pollInterval, chainInfo, fromHeight, maxResults)\n * @returns Array of TxResult matching the filter\n * @throws {TimeoutError} If no matching events found within timeout\n *\n * @example Wait for transfer events (polling)\n * ```typescript\n * const txs = await waitForEvent(client, {\n * type: 'transfer',\n * attributes: { recipient: 'init1...' }\n * })\n * ```\n *\n * @example Wait for events from specific height (WebSocket)\n * ```typescript\n * const txs = await waitForEvent(client, {\n * type: 'transfer',\n * attributes: { recipient: 'init1...' }\n * }, {\n * chainInfo,\n * fromHeight: 1000n,\n * maxResults: 10\n * })\n * ```\n */\nexport async function waitForEvent(\n client: TxSearchClient,\n filter: EventFilter,\n options: WaitForEventOptions = {}\n): Promise<TxResult[]> {\n // Use WebSocket if chainInfo with wss endpoint is provided\n if (options.chainInfo?.wss) {\n try {\n return await waitForEventWebSocket(client, filter, options.chainInfo, options)\n } catch (error) {\n // If WebSocket fails (not timeout), fallback to polling\n if (error instanceof TimeoutError) {\n throw error\n }\n // WebSocket connection failed, fallback to polling\n }\n }\n\n // Fallback to polling\n return waitForEventPolling(client, filter, options)\n}\n\n/**\n * Internal: WebSocket-based waitForEvent implementation.\n *\n * Uses \"Subscribe First, Query After\" pattern:\n * 1. Subscribe to tx events first (guarantees future transactions)\n * 2. Query historical transactions matching filter\n * 3. Combine and deduplicate results\n */\nasync function waitForEventWebSocket(\n client: TxSearchClient,\n filter: EventFilter,\n chainInfo: ChainInfo,\n options: WaitForEventOptions\n): Promise<TxResult[]> {\n const timeout = options.timeout ?? DEFAULT_EVENT_TIMEOUT_MS\n const maxResults = options.maxResults ?? 100\n\n return new Promise((resolve, reject) => {\n let resolved = false\n let session: WebSocketSession | null = null\n let sub: Subscription | null = null\n let timer: ReturnType<typeof setTimeout> | null = null\n const results: Map<string, TxResult> = new Map() // Dedupe by txHash\n\n const cleanup = () => {\n if (timer) {\n clearTimeout(timer)\n timer = null\n }\n if (sub) {\n sub.unsubscribe()\n sub = null\n }\n if (session) {\n session.close()\n session = null\n }\n }\n\n const complete = () => {\n if (resolved) return\n resolved = true\n cleanup()\n // Sort by height ascending and return as array\n const sorted = Array.from(results.values()).sort((a, b) =>\n a.height < b.height ? -1 : a.height > b.height ? 1 : 0\n )\n resolve(sorted.slice(0, maxResults))\n }\n\n const fail = (error: Error) => {\n if (resolved) return\n resolved = true\n cleanup()\n reject(error)\n }\n\n const addResult = (tx: TxResult) => {\n if (resolved) return\n if (!results.has(tx.txHash) && matchesEventFilter(tx, filter)) {\n results.set(tx.txHash, tx)\n // Check if we have enough results\n if (results.size >= maxResults) {\n complete()\n }\n }\n }\n\n // Set timeout\n timer = setTimeout(() => {\n // On timeout, return whatever we have (even if empty)\n if (results.size > 0) {\n complete()\n } else {\n fail(new TimeoutError(`waitForEvent(${filter.type})`, timeout))\n }\n }, timeout)\n\n // Start async flow\n const execute = async () => {\n // Phase 1: Subscribe to tx events FIRST (guarantees we catch future txs)\n session = createSession(chainInfo, { autoReconnect: false })\n\n sub = await session.subscribe<WsTxResult>({ event: 'tx' }, wsTx => {\n if (resolved) return\n if (wsTx.height && wsTx.result) {\n // Convert WsTxResult to TxResult format\n const tx: TxResult = {\n height: BigInt(wsTx.height),\n txHash: wsTx.tx ?? '',\n code: wsTx.result.code ?? 0,\n rawLog: wsTx.result.log ?? '',\n gasUsed: BigInt(wsTx.result.gas_used ?? '0'),\n gasWanted: BigInt(wsTx.result.gas_wanted ?? '0'),\n events: (wsTx.result.events ?? []).map(e => ({\n type: e.type ?? '',\n attributes: (e.attributes ?? []).map(a => ({\n key: a.key ?? '',\n value: a.value ?? '',\n })),\n })),\n }\n addResult(tx)\n }\n })\n\n // Phase 2: Query historical transactions matching filter\n if (resolved) return\n\n const query = buildEventQuery(filter, options.fromHeight)\n try {\n const response = await client.tx.getTxsEvent({\n query,\n limit: BigInt(maxResults),\n orderBy: 1, // ORDER_BY_ASC\n })\n\n for (const txResponse of response.txResponses) {\n if (resolved) break\n const tx = formatTxResult(txResponse)\n addResult(tx)\n }\n\n // If we got results from historical query and no more are expected, complete\n // (For real-time waiting, keep subscription active until timeout)\n if (results.size >= maxResults) {\n complete()\n }\n } catch {\n // Historical query failed, continue with WebSocket only\n }\n }\n\n execute().catch(fail)\n })\n}\n\n/**\n * Internal: Polling-based waitForEvent implementation.\n */\nasync function waitForEventPolling(\n client: TxSearchClient,\n filter: EventFilter,\n options: WaitForEventOptions\n): Promise<TxResult[]> {\n const timeout = options.timeout ?? DEFAULT_EVENT_TIMEOUT_MS\n const pollInterval = options.pollInterval ?? DEFAULT_POLL_INTERVAL_MS\n const maxResults = options.maxResults ?? 100\n const startTime = Date.now()\n const results: Map<string, TxResult> = new Map()\n\n const query = buildEventQuery(filter, options.fromHeight)\n\n while (true) {\n // Check timeout\n if (Date.now() - startTime > timeout) {\n // Return whatever we have on timeout\n if (results.size > 0) {\n const sorted = Array.from(results.values()).sort((a, b) =>\n a.height < b.height ? -1 : a.height > b.height ? 1 : 0\n )\n return sorted.slice(0, maxResults)\n }\n throw new TimeoutError(`waitForEvent(${filter.type})`, timeout)\n }\n\n try {\n const response = await client.tx.getTxsEvent({\n query,\n limit: BigInt(maxResults),\n orderBy: 1, // ORDER_BY_ASC\n })\n\n for (const txResponse of response.txResponses) {\n const tx = formatTxResult(txResponse)\n if (!results.has(tx.txHash) && matchesEventFilter(tx, filter)) {\n results.set(tx.txHash, tx)\n }\n }\n\n // If we have enough results, return\n if (results.size >= maxResults) {\n const sorted = Array.from(results.values()).sort((a, b) =>\n a.height < b.height ? -1 : a.height > b.height ? 1 : 0\n )\n return sorted.slice(0, maxResults)\n }\n } catch {\n // Query failed, continue polling\n }\n\n // Wait before next poll\n await new Promise(r => setTimeout(r, pollInterval))\n }\n}\n"],"mappings":"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"}
@@ -0,0 +1,396 @@
1
+ import { n as fetchWithTimeout } from "./fetch-Bq_aay6V.mjs";
2
+ //#region src/codegen/format.ts
3
+ /**
4
+ * Generates a complete TypeScript file string with:
5
+ * - Header comment (source + auto-generated notice)
6
+ * - `import type` statement
7
+ * - `export const = value as const satisfies Type`
8
+ */
9
+ function formatAbiFile(options) {
10
+ const { source, importType, importFrom, exportName, value } = options;
11
+ return `${[
12
+ `// ${source}`,
13
+ "// This file is auto-generated. Do not edit manually.",
14
+ ""
15
+ ].join("\n")}\n${`import type { ${importType} } from '${importFrom}'`}\n\n${`export const ${exportName} = ${value} as const satisfies ${importType}`}\n`;
16
+ }
17
+ /**
18
+ * Converts a name into UPPER_SNAKE_CASE with a suffix.
19
+ *
20
+ * Examples:
21
+ * - "coin" -> "COIN_ABI"
22
+ * - "cw20-base" -> "CW20_BASE_ABI"
23
+ * - "myModule" -> "MY_MODULE_ABI"
24
+ * - "erc20" -> "ERC20_ABI"
25
+ * - "cw20-base", "SCHEMA" -> "CW20_BASE_SCHEMA"
26
+ */
27
+ function deriveExportName(name, suffix = "ABI") {
28
+ let result = name.replace(/-/g, "_");
29
+ result = result.replace(/([a-z0-9])([A-Z])/g, "$1_$2");
30
+ result = result.toUpperCase();
31
+ return `${result}_${suffix}`;
32
+ }
33
+ /**
34
+ * Converts a JS value to a TypeScript object literal string with single quotes.
35
+ *
36
+ * Handles: null, boolean, number, string, arrays, nested objects.
37
+ * Uses 2-space indentation.
38
+ *
39
+ * @param obj - The value to format
40
+ * @param indent - Initial indentation level (default 0)
41
+ */
42
+ function formatObjectLiteral(obj, indent = 0) {
43
+ const INDENT_SIZE = 2;
44
+ const pad = (level) => " ".repeat(level * INDENT_SIZE);
45
+ function format(value, level) {
46
+ if (value === null) return "null";
47
+ if (typeof value === "boolean") return String(value);
48
+ if (typeof value === "number") return String(value);
49
+ if (typeof value === "string") return `'${value.replace(/\\/g, "\\\\").replace(/'/g, "\\'")}'`;
50
+ if (Array.isArray(value)) {
51
+ if (value.length === 0) return "[]";
52
+ return `[\n${value.map((item) => `${pad(level + 1)}${format(item, level + 1)},`).join("\n")}\n${pad(level)}]`;
53
+ }
54
+ if (typeof value === "object") {
55
+ const entries = Object.entries(value);
56
+ if (entries.length === 0) return "{}";
57
+ return `{\n${entries.map(([key, val]) => `${pad(level + 1)}${key}: ${format(val, level + 1)},`).join("\n")}\n${pad(level)}}`;
58
+ }
59
+ throw new Error(`formatObjectLiteral: unsupported value type '${typeof value}'`);
60
+ }
61
+ return format(obj, indent);
62
+ }
63
+ //#endregion
64
+ //#region src/codegen/move.ts
65
+ /**
66
+ * Generates a TypeScript file string from a raw Move module ABI JSON string.
67
+ *
68
+ * The output contains:
69
+ * - Header comment with module address and name
70
+ * - `import type { ReadonlyMoveModuleAbi } from 'initia.js/move'`
71
+ * - `export const <NAME>_ABI = { ... } as const satisfies ReadonlyMoveModuleAbi`
72
+ *
73
+ * @param abiJson - Raw JSON string from Module.abi (as returned by gRPC)
74
+ * @param options - Optional overrides (exportName)
75
+ * @returns Complete TypeScript file content
76
+ * @throws Error if JSON is invalid or missing required fields (address, name)
77
+ *
78
+ * @example
79
+ * ```typescript
80
+ * const tsFile = generateMoveAbiString(rawJson)
81
+ * writeFileSync('coin-abi.ts', tsFile)
82
+ * ```
83
+ */
84
+ function generateMoveAbiString(abiJson, options) {
85
+ let parsed;
86
+ try {
87
+ parsed = JSON.parse(abiJson);
88
+ } catch (error) {
89
+ throw new Error(`Invalid Move ABI JSON: ${error instanceof Error ? error.message : String(error)}`);
90
+ }
91
+ const address = parsed.address;
92
+ const name = parsed.name;
93
+ if (!address || typeof address !== "string") throw new Error("Move ABI JSON missing required field: address");
94
+ if (!name || typeof name !== "string") throw new Error("Move ABI JSON missing required field: name");
95
+ const exportName = options?.exportName ?? deriveExportName(name);
96
+ const value = formatObjectLiteral(parsed);
97
+ return formatAbiFile({
98
+ source: `Move module: ${address}::${name}`,
99
+ importType: "ReadonlyMoveModuleAbi",
100
+ importFrom: "initia.js/move",
101
+ exportName,
102
+ value
103
+ });
104
+ }
105
+ /**
106
+ * Fetches a Move module ABI from the chain and generates a TypeScript file string.
107
+ *
108
+ * Uses the gRPC `move.module()` endpoint to retrieve the raw ABI JSON,
109
+ * then delegates to `generateMoveAbiString` for the transformation.
110
+ *
111
+ * @param context - Object with a client that has the `move` gRPC service
112
+ * @param moduleAddress - Module address (hex or bech32)
113
+ * @param moduleName - Module name (e.g., 'coin')
114
+ * @param options - Optional overrides (exportName)
115
+ * @returns Complete TypeScript file content
116
+ * @throws Error if the module is not found or has no ABI
117
+ *
118
+ * @example
119
+ * ```typescript
120
+ * const ctx = { client: createGrpcClient(endpoint, { chain: 'initia' }) }
121
+ * const tsFile = await generateMoveAbi(ctx, '0x1', 'coin')
122
+ * writeFileSync('coin-abi.ts', tsFile)
123
+ * ```
124
+ */
125
+ async function generateMoveAbi(context, moduleAddress, moduleName, options) {
126
+ const response = await context.client.move.module({
127
+ address: moduleAddress,
128
+ moduleName
129
+ });
130
+ if (!response.module) throw new Error(`Module not found: ${moduleAddress}::${moduleName}`);
131
+ const abiJson = response.module.abi;
132
+ if (!abiJson) throw new Error(`Module ABI not available: ${moduleAddress}::${moduleName}`);
133
+ return generateMoveAbiString(abiJson, options);
134
+ }
135
+ /**
136
+ * Fetches multiple Move module ABIs and generates TypeScript file strings.
137
+ *
138
+ * @param context - Object with a client that has the `move` gRPC service
139
+ * @param moduleAddress - Module address (hex or bech32)
140
+ * @param moduleNames - List of module names to fetch
141
+ * @returns Array of generated modules with their content and metadata
142
+ */
143
+ async function generateMoveAbiBatch(context, moduleAddress, moduleNames) {
144
+ const results = [];
145
+ for (const moduleName of moduleNames) {
146
+ const content = await generateMoveAbi(context, moduleAddress, moduleName);
147
+ results.push({
148
+ moduleName,
149
+ exportName: deriveExportName(moduleName),
150
+ content
151
+ });
152
+ }
153
+ return results;
154
+ }
155
+ /**
156
+ * Fetches all Move module ABIs from an address and generates TypeScript file strings.
157
+ *
158
+ * Uses `move.modules()` to discover all modules, then generates each one.
159
+ * Modules without ABI are silently skipped.
160
+ *
161
+ * @param context - Object with a client that has the `move` gRPC service
162
+ * @param moduleAddress - Module address (hex or bech32)
163
+ * @returns Array of generated modules with their content and metadata
164
+ */
165
+ async function generateMoveAbiAll(context, moduleAddress) {
166
+ const response = await context.client.move.modules({ address: moduleAddress });
167
+ const results = [];
168
+ for (const mod of response.modules) {
169
+ if (!mod.abi) continue;
170
+ try {
171
+ const content = generateMoveAbiString(mod.abi);
172
+ const moduleName = JSON.parse(mod.abi).name ?? mod.moduleName;
173
+ results.push({
174
+ moduleName,
175
+ exportName: deriveExportName(moduleName),
176
+ content
177
+ });
178
+ } catch {}
179
+ }
180
+ return results;
181
+ }
182
+ //#endregion
183
+ //#region src/codegen/evm.ts
184
+ /**
185
+ * EVM ABI Codegen
186
+ *
187
+ * Generates TypeScript files from EVM contract ABI definitions.
188
+ * Produces `as const satisfies Abi` exports (using `abitype`) for
189
+ * full type inference in downstream contract usage.
190
+ *
191
+ * Supports three ABI sources:
192
+ * - Raw ABI JSON array
193
+ * - Hardhat/Foundry artifact JSON with `.abi` field (+ optional `contractName`)
194
+ * - Etherscan-compatible API (async)
195
+ */
196
+ const DEFAULT_EXPORT_NAME$1 = "CONTRACT_ABI";
197
+ /**
198
+ * Generates a TypeScript file string from a parsed ABI JSON value.
199
+ *
200
+ * The input can be either:
201
+ * - A raw ABI array (e.g., `[{ type: 'function', name: 'balanceOf', ... }]`)
202
+ * - A Hardhat/Foundry artifact object with an `.abi` field and optional `contractName`
203
+ *
204
+ * The output contains:
205
+ * - Header comment with source info
206
+ * - `import type { Abi } from 'abitype'`
207
+ * - `export const <NAME> = [...] as const satisfies Abi`
208
+ *
209
+ * @param options - ABI source and optional overrides
210
+ * @returns Complete TypeScript file content
211
+ * @throws Error if input is not a valid ABI array or artifact with .abi array
212
+ *
213
+ * @example
214
+ * ```typescript
215
+ * import artifact from './MyToken.json'
216
+ * const tsFile = generateEvmAbiFromJson({ json: artifact })
217
+ * writeFileSync('my-token-abi.ts', tsFile)
218
+ * ```
219
+ */
220
+ function generateEvmAbiFromJson(options) {
221
+ const { json, exportName: exportNameOverride } = options;
222
+ const { abi, contractName } = extractAbi(json);
223
+ const exportName = exportNameOverride ?? (contractName ? deriveExportName(contractName) : DEFAULT_EXPORT_NAME$1);
224
+ return formatAbiFile({
225
+ source: contractName ? `EVM contract ABI: ${contractName}` : "EVM contract ABI",
226
+ importType: "Abi",
227
+ importFrom: "abitype",
228
+ exportName,
229
+ value: formatObjectLiteral(abi)
230
+ });
231
+ }
232
+ /**
233
+ * Fetches an EVM contract ABI from an Etherscan-compatible API and generates
234
+ * a TypeScript file string.
235
+ *
236
+ * @param options - Explorer URL, contract address, and optional overrides
237
+ * @returns Complete TypeScript file content
238
+ * @throws Error if the API returns an error or the response is not valid ABI JSON
239
+ *
240
+ * @example
241
+ * ```typescript
242
+ * const tsFile = await generateEvmAbiFromExplorer({
243
+ * address: '0xdAC17F958D2ee523a2206206994597C13D831ec7',
244
+ * explorerUrl: 'https://api.etherscan.io',
245
+ * apiKey: 'YOUR_KEY',
246
+ * })
247
+ * writeFileSync('usdt-abi.ts', tsFile)
248
+ * ```
249
+ */
250
+ async function generateEvmAbiFromExplorer(options) {
251
+ const { address, explorerUrl, exportName, apiKey } = options;
252
+ const params = new URLSearchParams();
253
+ params.set("module", "contract");
254
+ params.set("action", "getabi");
255
+ params.set("address", address);
256
+ if (apiKey) params.set("apikey", apiKey);
257
+ const response = await fetchWithTimeout(`${explorerUrl.replace(/\/+$/, "")}/api?${params.toString()}`);
258
+ if (!response.ok) throw new Error(`Explorer API request failed: ${response.status} ${response.statusText}`);
259
+ const data = await response.json();
260
+ if (data.status !== "1") throw new Error(`Explorer API error: ${data.message ?? data.result ?? "Unknown error"}`);
261
+ let abi;
262
+ try {
263
+ abi = JSON.parse(data.result);
264
+ } catch (error) {
265
+ throw new Error(`Failed to parse ABI from explorer: ${error instanceof Error ? error.message : String(error)}`);
266
+ }
267
+ return generateEvmAbiFromJson({
268
+ json: abi,
269
+ exportName
270
+ });
271
+ }
272
+ /**
273
+ * Extracts an ABI array from either a raw ABI array or an artifact object.
274
+ * @throws Error if the input is not a valid ABI source
275
+ */
276
+ function extractAbi(json) {
277
+ if (Array.isArray(json)) return { abi: json };
278
+ if (json !== null && typeof json === "object") {
279
+ const artifact = json;
280
+ if ("abi" in artifact) {
281
+ if (!Array.isArray(artifact.abi)) throw new Error("Invalid EVM artifact: .abi field exists but is not an array");
282
+ const contractName = typeof artifact.contractName === "string" ? artifact.contractName : void 0;
283
+ return {
284
+ abi: artifact.abi,
285
+ contractName
286
+ };
287
+ }
288
+ }
289
+ throw new Error("Invalid EVM ABI input: expected an ABI array or an artifact object with an .abi array field");
290
+ }
291
+ //#endregion
292
+ //#region src/codegen/wasm.ts
293
+ /**
294
+ * Wasm Schema Codegen
295
+ *
296
+ * Generates TypeScript files from CosmWasm JSON Schema files
297
+ * (typically `execute_msg.json` and `query_msg.json`).
298
+ *
299
+ * Produces `as const satisfies ReadonlyWasmContractSchema` exports with
300
+ * minimal variant information (variant names only) for type-level
301
+ * autocomplete in downstream contract usage.
302
+ *
303
+ * Entry point:
304
+ * - `generateWasmAbiFromJson` — pure transformation (parsed schemas -> .ts string)
305
+ */
306
+ const DEFAULT_EXPORT_NAME = "CONTRACT_SCHEMA";
307
+ /**
308
+ * Generates a TypeScript file string from parsed CosmWasm JSON Schema objects.
309
+ *
310
+ * The output contains:
311
+ * - Header comment
312
+ * - `import type { ReadonlyWasmContractSchema } from 'initia.js/wasm'`
313
+ * - `export const <NAME> = { ... } as const satisfies ReadonlyWasmContractSchema`
314
+ *
315
+ * The schema is minimized to only include variant names (required + empty
316
+ * property objects), which is sufficient for type-level autocomplete.
317
+ *
318
+ * @param options - Execute/query schemas and optional overrides
319
+ * @returns Complete TypeScript file content
320
+ * @throws Error if neither execute nor query schema is provided
321
+ * @throws Error if a schema has neither oneOf nor anyOf
322
+ * @throws Error if a variant has no required field
323
+ *
324
+ * @example
325
+ * ```typescript
326
+ * import executeSchema from './execute_msg.json'
327
+ * import querySchema from './query_msg.json'
328
+ *
329
+ * const tsFile = generateWasmAbiFromJson({
330
+ * execute: executeSchema,
331
+ * query: querySchema,
332
+ * })
333
+ * writeFileSync('cw20-schema.ts', tsFile)
334
+ * ```
335
+ */
336
+ function generateWasmAbiFromJson(options) {
337
+ const { execute, query, exportName = DEFAULT_EXPORT_NAME } = options;
338
+ if (!execute && !query) throw new Error("At least one of execute or query schema must be provided");
339
+ const schema = {};
340
+ if (execute) schema.execute = extractWasmMsgSchema(execute, "execute");
341
+ if (query) schema.query = extractWasmMsgSchema(query, "query");
342
+ return formatAbiFile({
343
+ source: "CosmWasm contract schema",
344
+ importType: "ReadonlyWasmContractSchema",
345
+ importFrom: "initia.js/wasm",
346
+ exportName,
347
+ value: formatObjectLiteral(schema)
348
+ });
349
+ }
350
+ /**
351
+ * Extracts a minimal oneOf/anyOf schema from a parsed JSON Schema.
352
+ *
353
+ * Looks for `oneOf` or `anyOf` arrays and extracts each variant's
354
+ * `required` field + builds a minimal `properties` map (empty objects).
355
+ *
356
+ * @param schema - Parsed JSON Schema (unknown for safety)
357
+ * @param label - Human-readable label for error messages ("execute" or "query")
358
+ * @returns Minimal schema object with oneOf or anyOf
359
+ * @throws Error if the schema has neither oneOf nor anyOf
360
+ * @throws Error if any variant lacks a required field
361
+ */
362
+ function extractWasmMsgSchema(schema, label) {
363
+ if (schema === null || typeof schema !== "object") throw new Error(`Invalid ${label} schema: expected an object`);
364
+ const obj = schema;
365
+ if (Array.isArray(obj.oneOf)) return { oneOf: obj.oneOf.map((v) => extractVariant(v, label)) };
366
+ if (Array.isArray(obj.anyOf)) return { anyOf: obj.anyOf.map((v) => extractVariant(v, label)) };
367
+ throw new Error(`Invalid ${label} schema: expected oneOf or anyOf array at the top level`);
368
+ }
369
+ /**
370
+ * Extracts a minimal variant from a JSON Schema variant object.
371
+ *
372
+ * Returns an object with:
373
+ * - `required`: the original required array (variant names)
374
+ * - `properties`: a map of each required key to an empty object `{}`
375
+ *
376
+ * @param variant - A single variant from oneOf/anyOf
377
+ * @param label - Human-readable label for error messages
378
+ * @returns Minimal variant with required + properties
379
+ * @throws Error if the variant has no required field
380
+ */
381
+ function extractVariant(variant, label) {
382
+ if (variant === null || typeof variant !== "object") throw new Error(`Invalid ${label} variant: expected an object`);
383
+ const obj = variant;
384
+ if (!Array.isArray(obj.required) || obj.required.length === 0) throw new Error(`Invalid ${label} variant: each variant must have a non-empty "required" array`);
385
+ const required = obj.required;
386
+ const properties = {};
387
+ for (const key of required) properties[key] = {};
388
+ return {
389
+ required,
390
+ properties
391
+ };
392
+ }
393
+ //#endregion
394
+ export { generateMoveAbiAll as a, deriveExportName as c, generateMoveAbi as i, formatAbiFile as l, generateEvmAbiFromExplorer as n, generateMoveAbiBatch as o, generateEvmAbiFromJson as r, generateMoveAbiString as s, generateWasmAbiFromJson as t, formatObjectLiteral as u };
395
+
396
+ //# sourceMappingURL=wasm-DdunGtLM.mjs.map