@geeqdev/geeq-sdk 0.1.0 → 0.2.0

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 (392) hide show
  1. package/.idea/geeq_sdk.iml +12 -0
  2. package/.idea/modules.xml +8 -0
  3. package/.idea/vcs.xml +6 -0
  4. package/.nvmrc +1 -0
  5. package/CONTRIBUTING.md +20 -0
  6. package/dist/src/address/record-type.d.ts +10 -0
  7. package/dist/src/address/record-type.js +59 -0
  8. package/dist/src/address/record-type.js.map +1 -0
  9. package/dist/src/address/wallet-address.d.ts +34 -0
  10. package/dist/src/address/wallet-address.js +90 -0
  11. package/dist/src/address/wallet-address.js.map +1 -0
  12. package/dist/src/amount.d.ts +43 -0
  13. package/dist/src/amount.js +105 -0
  14. package/dist/src/amount.js.map +1 -0
  15. package/dist/src/assert.d.ts +12 -0
  16. package/dist/src/assert.js +24 -0
  17. package/dist/src/assert.js.map +1 -0
  18. package/dist/src/capnp/adminNetTx.capnp.d.ts +75 -0
  19. package/dist/src/capnp/adminNetTx.capnp.js +66 -0
  20. package/dist/src/capnp/adminNetTx.capnp.js.map +1 -0
  21. package/dist/src/capnp/appLayBlock.capnp.d.ts +26 -0
  22. package/dist/src/capnp/appLayBlock.capnp.js +24 -0
  23. package/dist/src/capnp/appLayBlock.capnp.js.map +1 -0
  24. package/dist/src/capnp/appLayLedger.capnp.d.ts +34 -0
  25. package/dist/src/capnp/appLayLedger.capnp.js +32 -0
  26. package/dist/src/capnp/appLayLedger.capnp.js.map +1 -0
  27. package/dist/src/capnp/appLayRec.capnp.d.ts +129 -0
  28. package/dist/src/capnp/appLayRec.capnp.js +156 -0
  29. package/dist/src/capnp/appLayRec.capnp.js.map +1 -0
  30. package/dist/src/capnp/chainStateView.capnp.d.ts +50 -0
  31. package/dist/src/capnp/chainStateView.capnp.js +48 -0
  32. package/dist/src/capnp/chainStateView.capnp.js.map +1 -0
  33. package/dist/src/capnp/coinAcctRec.capnp.d.ts +178 -0
  34. package/dist/src/capnp/coinAcctRec.capnp.js +189 -0
  35. package/dist/src/capnp/coinAcctRec.capnp.js.map +1 -0
  36. package/dist/src/capnp/genesisBlock.capnp.d.ts +61 -0
  37. package/dist/src/capnp/genesisBlock.capnp.js +55 -0
  38. package/dist/src/capnp/genesisBlock.capnp.js.map +1 -0
  39. package/dist/src/capnp/hubContentStmt.capnp.d.ts +63 -0
  40. package/dist/src/capnp/hubContentStmt.capnp.js +57 -0
  41. package/dist/src/capnp/hubContentStmt.capnp.js.map +1 -0
  42. package/dist/src/capnp/misc.capnp.d.ts +20 -0
  43. package/dist/src/capnp/misc.capnp.js +18 -0
  44. package/dist/src/capnp/misc.capnp.js.map +1 -0
  45. package/dist/src/capnp/netActorRec.capnp.d.ts +65 -0
  46. package/dist/src/capnp/netActorRec.capnp.js +65 -0
  47. package/dist/src/capnp/netActorRec.capnp.js.map +1 -0
  48. package/dist/src/capnp/nodeContentStmt.capnp.d.ts +67 -0
  49. package/dist/src/capnp/nodeContentStmt.capnp.js +61 -0
  50. package/dist/src/capnp/nodeContentStmt.capnp.js.map +1 -0
  51. package/dist/src/capnp/nodePayloadList.capnp.d.ts +28 -0
  52. package/dist/src/capnp/nodePayloadList.capnp.js +26 -0
  53. package/dist/src/capnp/nodePayloadList.capnp.js.map +1 -0
  54. package/dist/src/capnp/nodeTxList.capnp.d.ts +36 -0
  55. package/dist/src/capnp/nodeTxList.capnp.js +34 -0
  56. package/dist/src/capnp/nodeTxList.capnp.js.map +1 -0
  57. package/dist/src/capnp/paramAcctRec.capnp.d.ts +338 -0
  58. package/dist/src/capnp/paramAcctRec.capnp.js +669 -0
  59. package/dist/src/capnp/paramAcctRec.capnp.js.map +1 -0
  60. package/dist/src/capnp/payload.capnp.d.ts +237 -0
  61. package/dist/src/capnp/payload.capnp.js +260 -0
  62. package/dist/src/capnp/payload.capnp.js.map +1 -0
  63. package/dist/src/capnp/proxyAcctRec.capnp.d.ts +223 -0
  64. package/dist/src/capnp/proxyAcctRec.capnp.js +255 -0
  65. package/dist/src/capnp/proxyAcctRec.capnp.js.map +1 -0
  66. package/dist/src/capnp/relayContentStmt.capnp.d.ts +82 -0
  67. package/dist/src/capnp/relayContentStmt.capnp.js +85 -0
  68. package/dist/src/capnp/relayContentStmt.capnp.js.map +1 -0
  69. package/dist/src/capnp/sysAcctRec.capnp.d.ts +48 -0
  70. package/dist/src/capnp/sysAcctRec.capnp.js +46 -0
  71. package/dist/src/capnp/sysAcctRec.capnp.js.map +1 -0
  72. package/dist/src/capnp/userAppTx.capnp.d.ts +230 -0
  73. package/dist/src/capnp/userAppTx.capnp.js +270 -0
  74. package/dist/src/capnp/userAppTx.capnp.js.map +1 -0
  75. package/dist/src/capnp/userValTx.capnp.d.ts +1575 -0
  76. package/dist/src/capnp/userValTx.capnp.js +2004 -0
  77. package/dist/src/capnp/userValTx.capnp.js.map +1 -0
  78. package/dist/src/capnp/valLayBlock.capnp.d.ts +88 -0
  79. package/dist/src/capnp/valLayBlock.capnp.js +86 -0
  80. package/dist/src/capnp/valLayBlock.capnp.js.map +1 -0
  81. package/dist/src/capnp/valLayLedger.capnp.d.ts +85 -0
  82. package/dist/src/capnp/valLayLedger.capnp.js +75 -0
  83. package/dist/src/capnp/valLayLedger.capnp.js.map +1 -0
  84. package/dist/src/chain/geeq-chain.d.ts +474 -0
  85. package/dist/src/chain/geeq-chain.js +721 -0
  86. package/dist/src/chain/geeq-chain.js.map +1 -0
  87. package/dist/src/chain/geeq-node.d.ts +57 -0
  88. package/dist/src/chain/geeq-node.js +62 -0
  89. package/dist/src/chain/geeq-node.js.map +1 -0
  90. package/dist/src/chain/nonce-guard.d.ts +42 -0
  91. package/dist/src/chain/nonce-guard.js +68 -0
  92. package/dist/src/chain/nonce-guard.js.map +1 -0
  93. package/dist/src/chain/select.d.ts +40 -0
  94. package/dist/src/chain/select.js +114 -0
  95. package/dist/src/chain/select.js.map +1 -0
  96. package/dist/src/crypto/account-id.d.ts +35 -0
  97. package/dist/src/crypto/account-id.js +58 -0
  98. package/dist/src/crypto/account-id.js.map +1 -0
  99. package/dist/src/crypto/keypair.d.ts +24 -0
  100. package/dist/src/crypto/keypair.js +158 -0
  101. package/dist/src/crypto/keypair.js.map +1 -0
  102. package/dist/src/crypto/mnemonic.d.ts +34 -0
  103. package/dist/src/crypto/mnemonic.js +57 -0
  104. package/dist/src/crypto/mnemonic.js.map +1 -0
  105. package/dist/src/encoding/base64.d.ts +8 -0
  106. package/dist/src/encoding/base64.js +53 -0
  107. package/dist/src/encoding/base64.js.map +1 -0
  108. package/dist/src/encoding/hex.d.ts +2 -0
  109. package/dist/src/encoding/hex.js +35 -0
  110. package/dist/src/encoding/hex.js.map +1 -0
  111. package/dist/src/errors.d.ts +83 -0
  112. package/dist/src/errors.js +49 -0
  113. package/dist/src/errors.js.map +1 -0
  114. package/dist/src/index.d.ts +59 -0
  115. package/dist/src/index.js +53 -0
  116. package/dist/src/index.js.map +1 -0
  117. package/dist/src/ledger/coin-accounts.d.ts +42 -0
  118. package/dist/src/ledger/coin-accounts.js +37 -0
  119. package/dist/src/ledger/coin-accounts.js.map +1 -0
  120. package/dist/src/ledger/decode.d.ts +18 -0
  121. package/dist/src/ledger/decode.js +113 -0
  122. package/dist/src/ledger/decode.js.map +1 -0
  123. package/dist/src/ledger/geeq-ledger.d.ts +99 -0
  124. package/dist/src/ledger/geeq-ledger.js +125 -0
  125. package/dist/src/ledger/geeq-ledger.js.map +1 -0
  126. package/dist/src/ledger/net-actors.d.ts +65 -0
  127. package/dist/src/ledger/net-actors.js +53 -0
  128. package/dist/src/ledger/net-actors.js.map +1 -0
  129. package/dist/src/ledger/nft-records.d.ts +13 -0
  130. package/dist/src/ledger/nft-records.js +41 -0
  131. package/dist/src/ledger/nft-records.js.map +1 -0
  132. package/dist/src/ledger/params.d.ts +34 -0
  133. package/dist/src/ledger/params.js +71 -0
  134. package/dist/src/ledger/params.js.map +1 -0
  135. package/dist/src/ledger/proxy-accounts.d.ts +26 -0
  136. package/dist/src/ledger/proxy-accounts.js +27 -0
  137. package/dist/src/ledger/proxy-accounts.js.map +1 -0
  138. package/dist/src/net/discovery.d.ts +62 -0
  139. package/dist/src/net/discovery.js +136 -0
  140. package/dist/src/net/discovery.js.map +1 -0
  141. package/dist/src/net/explorer.d.ts +57 -0
  142. package/dist/src/net/explorer.js +64 -0
  143. package/dist/src/net/explorer.js.map +1 -0
  144. package/dist/src/net/read-ledger.d.ts +7 -0
  145. package/dist/src/net/read-ledger.js +39 -0
  146. package/dist/src/net/read-ledger.js.map +1 -0
  147. package/dist/src/net/routes.d.ts +49 -0
  148. package/dist/src/net/routes.js +70 -0
  149. package/dist/src/net/routes.js.map +1 -0
  150. package/dist/src/net/transport.d.ts +55 -0
  151. package/dist/src/net/transport.js +168 -0
  152. package/dist/src/net/transport.js.map +1 -0
  153. package/dist/src/net/websocket.d.ts +49 -0
  154. package/dist/src/net/websocket.js +54 -0
  155. package/dist/src/net/websocket.js.map +1 -0
  156. package/dist/src/runtime/bindings.d.ts +9 -0
  157. package/dist/src/runtime/bindings.js +27 -0
  158. package/dist/src/runtime/bindings.js.map +1 -0
  159. package/dist/src/runtime/init.d.ts +13 -0
  160. package/dist/src/runtime/init.js +40 -0
  161. package/dist/src/runtime/init.js.map +1 -0
  162. package/dist/src/runtime/wasm-loader.browser.d.ts +14 -0
  163. package/dist/src/runtime/wasm-loader.browser.js +20 -0
  164. package/dist/src/runtime/wasm-loader.browser.js.map +1 -0
  165. package/dist/src/runtime/wasm-loader.node.d.ts +7 -0
  166. package/dist/src/runtime/wasm-loader.node.js +14 -0
  167. package/dist/src/runtime/wasm-loader.node.js.map +1 -0
  168. package/dist/src/socket/geeq-socket.d.ts +232 -0
  169. package/dist/src/socket/geeq-socket.js +634 -0
  170. package/dist/src/socket/geeq-socket.js.map +1 -0
  171. package/dist/src/socket/tracked-tx.d.ts +148 -0
  172. package/dist/src/socket/tracked-tx.js +212 -0
  173. package/dist/src/socket/tracked-tx.js.map +1 -0
  174. package/dist/src/socket/tx-status.d.ts +69 -0
  175. package/dist/src/socket/tx-status.js +72 -0
  176. package/dist/src/socket/tx-status.js.map +1 -0
  177. package/dist/src/tx/attestation.d.ts +60 -0
  178. package/dist/src/tx/attestation.js +163 -0
  179. package/dist/src/tx/attestation.js.map +1 -0
  180. package/dist/src/tx/content.d.ts +27 -0
  181. package/dist/src/tx/content.js +62 -0
  182. package/dist/src/tx/content.js.map +1 -0
  183. package/dist/src/tx/encode.d.ts +60 -0
  184. package/dist/src/tx/encode.js +82 -0
  185. package/dist/src/tx/encode.js.map +1 -0
  186. package/dist/src/tx/expiry.d.ts +11 -0
  187. package/dist/src/tx/expiry.js +12 -0
  188. package/dist/src/tx/expiry.js.map +1 -0
  189. package/dist/src/tx/fee.d.ts +16 -0
  190. package/dist/src/tx/fee.js +29 -0
  191. package/dist/src/tx/fee.js.map +1 -0
  192. package/dist/src/tx/metadata.d.ts +39 -0
  193. package/dist/src/tx/metadata.js +66 -0
  194. package/dist/src/tx/metadata.js.map +1 -0
  195. package/dist/src/tx/nft.d.ts +16 -0
  196. package/dist/src/tx/nft.js +98 -0
  197. package/dist/src/tx/nft.js.map +1 -0
  198. package/dist/src/tx/proxy.d.ts +37 -0
  199. package/dist/src/tx/proxy.js +134 -0
  200. package/dist/src/tx/proxy.js.map +1 -0
  201. package/dist/src/tx/transfer.d.ts +31 -0
  202. package/dist/src/tx/transfer.js +123 -0
  203. package/dist/src/tx/transfer.js.map +1 -0
  204. package/dist/src/types.d.ts +448 -0
  205. package/dist/src/types.js +2 -0
  206. package/dist/src/types.js.map +1 -0
  207. package/dist/tests/account-id.test.d.ts +1 -0
  208. package/dist/tests/account-id.test.js +27 -0
  209. package/dist/tests/account-id.test.js.map +1 -0
  210. package/dist/tests/amount.test.d.ts +1 -0
  211. package/dist/tests/amount.test.js +113 -0
  212. package/dist/tests/amount.test.js.map +1 -0
  213. package/dist/tests/attestation.test.d.ts +1 -0
  214. package/dist/tests/attestation.test.js +182 -0
  215. package/dist/tests/attestation.test.js.map +1 -0
  216. package/dist/tests/chain.test.d.ts +1 -0
  217. package/dist/tests/chain.test.js +647 -0
  218. package/dist/tests/chain.test.js.map +1 -0
  219. package/dist/tests/content.test.d.ts +1 -0
  220. package/dist/tests/content.test.js +90 -0
  221. package/dist/tests/content.test.js.map +1 -0
  222. package/dist/tests/documented-api.test.d.ts +1 -0
  223. package/dist/tests/documented-api.test.js +229 -0
  224. package/dist/tests/documented-api.test.js.map +1 -0
  225. package/dist/tests/explorer.test.d.ts +1 -0
  226. package/dist/tests/explorer.test.js +95 -0
  227. package/dist/tests/explorer.test.js.map +1 -0
  228. package/dist/tests/fee.test.d.ts +1 -0
  229. package/dist/tests/fee.test.js +179 -0
  230. package/dist/tests/fee.test.js.map +1 -0
  231. package/dist/tests/fixtures/build-vll.d.ts +71 -0
  232. package/dist/tests/fixtures/build-vll.js +141 -0
  233. package/dist/tests/fixtures/build-vll.js.map +1 -0
  234. package/dist/tests/fixtures/fake-socket.d.ts +44 -0
  235. package/dist/tests/fixtures/fake-socket.js +93 -0
  236. package/dist/tests/fixtures/fake-socket.js.map +1 -0
  237. package/dist/tests/fixtures/fake-transport.d.ts +24 -0
  238. package/dist/tests/fixtures/fake-transport.js +30 -0
  239. package/dist/tests/fixtures/fake-transport.js.map +1 -0
  240. package/dist/tests/keypair.test.d.ts +1 -0
  241. package/dist/tests/keypair.test.js +163 -0
  242. package/dist/tests/keypair.test.js.map +1 -0
  243. package/dist/tests/ledger.test.d.ts +1 -0
  244. package/dist/tests/ledger.test.js +234 -0
  245. package/dist/tests/ledger.test.js.map +1 -0
  246. package/dist/tests/mnemonic.test.d.ts +1 -0
  247. package/dist/tests/mnemonic.test.js +97 -0
  248. package/dist/tests/mnemonic.test.js.map +1 -0
  249. package/dist/tests/nft-transfer.test.d.ts +1 -0
  250. package/dist/tests/nft-transfer.test.js +170 -0
  251. package/dist/tests/nft-transfer.test.js.map +1 -0
  252. package/dist/tests/nft.test.d.ts +1 -0
  253. package/dist/tests/nft.test.js +180 -0
  254. package/dist/tests/nft.test.js.map +1 -0
  255. package/dist/tests/offline.test.d.ts +1 -0
  256. package/dist/tests/offline.test.js +95 -0
  257. package/dist/tests/offline.test.js.map +1 -0
  258. package/dist/tests/proxy.test.d.ts +1 -0
  259. package/dist/tests/proxy.test.js +183 -0
  260. package/dist/tests/proxy.test.js.map +1 -0
  261. package/dist/tests/select.test.d.ts +1 -0
  262. package/dist/tests/select.test.js +200 -0
  263. package/dist/tests/select.test.js.map +1 -0
  264. package/dist/tests/socket.test.d.ts +1 -0
  265. package/dist/tests/socket.test.js +607 -0
  266. package/dist/tests/socket.test.js.map +1 -0
  267. package/dist/tests/transfer.test.d.ts +1 -0
  268. package/dist/tests/transfer.test.js +225 -0
  269. package/dist/tests/transfer.test.js.map +1 -0
  270. package/dist/tests/wallet-address.test.d.ts +1 -0
  271. package/dist/tests/wallet-address.test.js +101 -0
  272. package/dist/tests/wallet-address.test.js.map +1 -0
  273. package/dist/tests/wasm-loader.jest.d.ts +13 -0
  274. package/dist/tests/wasm-loader.jest.js +15 -0
  275. package/dist/tests/wasm-loader.jest.js.map +1 -0
  276. package/example/.env.example +4 -0
  277. package/example/README.md +304 -0
  278. package/example/USAGE.md +74 -0
  279. package/example/index.html +12 -0
  280. package/example/package-lock.json +1557 -0
  281. package/example/package.json +25 -0
  282. package/example/scripts/browser-check.mjs +1421 -0
  283. package/example/scripts/match-derivation.mjs +65 -0
  284. package/example/src/App.vue +138 -0
  285. package/example/src/components/AuthorityPanel.vue +277 -0
  286. package/example/src/components/ChainPanel.vue +267 -0
  287. package/example/src/components/ChainState.vue +59 -0
  288. package/example/src/components/CopyButton.vue +25 -0
  289. package/example/src/components/CreateAssetPanel.vue +313 -0
  290. package/example/src/components/DigitalAssetsPanel.vue +68 -0
  291. package/example/src/components/EvidencePanel.vue +396 -0
  292. package/example/src/components/ExplorerPanel.vue +119 -0
  293. package/example/src/components/KeypairPanel.vue +182 -0
  294. package/example/src/components/PhrasePanel.vue +105 -0
  295. package/example/src/components/SocketWarning.vue +18 -0
  296. package/example/src/components/StepGate.vue +24 -0
  297. package/example/src/components/TransferPanel.vue +416 -0
  298. package/example/src/components/TxDeadline.vue +19 -0
  299. package/example/src/components/TxFee.vue +31 -0
  300. package/example/src/components/TxStatus.vue +105 -0
  301. package/example/src/composables/useSocketConnection.ts +80 -0
  302. package/example/src/env.d.ts +12 -0
  303. package/example/src/main.ts +5 -0
  304. package/example/src/pennies.ts +7 -0
  305. package/example/src/style.css +149 -0
  306. package/example/tsconfig.json +19 -0
  307. package/example/vite.config.ts +26 -0
  308. package/jest.config.js +18 -0
  309. package/package.json +2 -6
  310. package/scripts/copy-wasm.mjs +21 -0
  311. package/scripts/smoke.mjs +382 -0
  312. package/src/address/record-type.ts +77 -0
  313. package/src/address/wallet-address.ts +105 -0
  314. package/src/amount.ts +143 -0
  315. package/src/assert.ts +30 -0
  316. package/src/capnp/README.md +15 -0
  317. package/src/capnp/adminNetTx.capnp.ts +66 -0
  318. package/src/capnp/appLayBlock.capnp.ts +26 -0
  319. package/src/capnp/appLayLedger.capnp.ts +35 -0
  320. package/src/capnp/appLayRec.capnp.ts +159 -0
  321. package/src/capnp/chainStateView.capnp.ts +49 -0
  322. package/src/capnp/coinAcctRec.capnp.ts +193 -0
  323. package/src/capnp/genesisBlock.capnp.ts +56 -0
  324. package/src/capnp/hubContentStmt.capnp.ts +59 -0
  325. package/src/capnp/misc.capnp.ts +19 -0
  326. package/src/capnp/netActorRec.capnp.ts +64 -0
  327. package/src/capnp/nodeContentStmt.capnp.ts +62 -0
  328. package/src/capnp/nodePayloadList.capnp.ts +28 -0
  329. package/src/capnp/nodeTxList.capnp.ts +37 -0
  330. package/src/capnp/paramAcctRec.capnp.ts +669 -0
  331. package/src/capnp/payload.capnp.ts +261 -0
  332. package/src/capnp/proxyAcctRec.capnp.ts +259 -0
  333. package/src/capnp/relayContentStmt.capnp.ts +85 -0
  334. package/src/capnp/sysAcctRec.capnp.ts +47 -0
  335. package/src/capnp/userAppTx.capnp.ts +269 -0
  336. package/src/capnp/userValTx.capnp.ts +1999 -0
  337. package/src/capnp/valLayBlock.capnp.ts +93 -0
  338. package/src/capnp/valLayLedger.capnp.ts +80 -0
  339. package/src/chain/geeq-chain.ts +1094 -0
  340. package/src/chain/geeq-node.ts +105 -0
  341. package/src/chain/nonce-guard.ts +73 -0
  342. package/src/chain/select.ts +149 -0
  343. package/src/crypto/account-id.ts +83 -0
  344. package/src/crypto/keypair.ts +221 -0
  345. package/src/crypto/mnemonic.ts +69 -0
  346. package/src/encoding/base64.ts +58 -0
  347. package/src/encoding/hex.ts +42 -0
  348. package/src/errors.ts +122 -0
  349. package/src/index.ts +195 -0
  350. package/src/ledger/coin-accounts.ts +73 -0
  351. package/src/ledger/decode.ts +147 -0
  352. package/src/ledger/geeq-ledger.ts +184 -0
  353. package/src/ledger/net-actors.ts +129 -0
  354. package/src/ledger/nft-records.ts +49 -0
  355. package/src/ledger/params.ts +82 -0
  356. package/src/ledger/proxy-accounts.ts +51 -0
  357. package/src/net/discovery.ts +231 -0
  358. package/src/net/explorer.ts +123 -0
  359. package/src/net/read-ledger.ts +58 -0
  360. package/src/net/routes.ts +79 -0
  361. package/src/net/transport.ts +221 -0
  362. package/src/net/websocket.ts +94 -0
  363. package/src/runtime/bindings.ts +38 -0
  364. package/src/runtime/init.ts +49 -0
  365. package/src/runtime/wasm-loader.browser.ts +22 -0
  366. package/src/runtime/wasm-loader.node.ts +16 -0
  367. package/src/socket/geeq-socket.ts +827 -0
  368. package/src/socket/tracked-tx.ts +319 -0
  369. package/src/socket/tx-status.ts +131 -0
  370. package/src/tx/attestation.ts +222 -0
  371. package/src/tx/content.ts +82 -0
  372. package/src/tx/encode.ts +107 -0
  373. package/src/tx/expiry.ts +11 -0
  374. package/src/tx/fee.ts +31 -0
  375. package/src/tx/metadata.ts +100 -0
  376. package/src/tx/nft.ts +108 -0
  377. package/src/tx/proxy.ts +156 -0
  378. package/src/tx/transfer.ts +162 -0
  379. package/src/types.ts +503 -0
  380. package/src/wasm/README.md +22 -0
  381. package/src/wasm/browser/geeq_core.d.ts +1224 -0
  382. package/src/wasm/browser/geeq_core.js +6014 -0
  383. package/src/wasm/browser/geeq_core_bg.wasm +0 -0
  384. package/src/wasm/browser/geeq_core_bg.wasm.d.ts +447 -0
  385. package/src/wasm/nodejs/geeq_core.d.ts +753 -0
  386. package/src/wasm/nodejs/geeq_core.js +6016 -0
  387. package/src/wasm/nodejs/geeq_core_bg.wasm +0 -0
  388. package/src/wasm/nodejs/geeq_core_bg.wasm.d.ts +447 -0
  389. package/src/wasm/nodejs/package.json +3 -0
  390. package/tsconfig.build.json +8 -0
  391. package/tsconfig.json +21 -0
  392. package/tsup.config.ts +60 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"geeq-chain.js","sourceRoot":"","sources":["../../../src/chain/geeq-chain.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,57 @@
1
+ import type { GeeqLedger } from '../ledger/geeq-ledger';
2
+ import type { GeeqNodeRole, GeeqNodeStatus } from '../ledger/net-actors';
3
+ import type { GeeqTransport } from '../net/transport';
4
+ /** @internal */
5
+ export interface NodeRequestConfig {
6
+ readonly transport: GeeqTransport;
7
+ readonly timeoutMs: number;
8
+ readonly retries: number;
9
+ readonly headers: Readonly<Record<string, string>> | undefined;
10
+ }
11
+ /** @internal */
12
+ export interface GeeqNodeInit extends NodeRequestConfig {
13
+ readonly url: string;
14
+ readonly nodeNumber: number;
15
+ readonly host: string;
16
+ readonly port: number;
17
+ readonly role: GeeqNodeRole;
18
+ readonly status: GeeqNodeStatus;
19
+ readonly processing: boolean;
20
+ }
21
+ /**
22
+ * One node, identified in its own chain's ledger.
23
+ *
24
+ * A node is only meaningful once a ledger has confirmed which actor it is: the number a
25
+ * transaction must carry is the node's own `nodeNumSelf`, checked with strict equality,
26
+ * and nothing outside the ledger reports it.
27
+ */
28
+ export declare class GeeqNode {
29
+ /** Absolute origin, no trailing slash. */
30
+ readonly url: string;
31
+ /** `nodeNumSelf` — what a transaction targeting this node must name. */
32
+ readonly nodeNumber: number;
33
+ /** The bare IP the ledger records for it. */
34
+ readonly host: string;
35
+ /** Its own listen port from the ledger, which is not necessarily {@link url}'s. */
36
+ readonly port: number;
37
+ readonly role: GeeqNodeRole;
38
+ readonly status: GeeqNodeStatus;
39
+ /** Whether it accepts transactions at all. */
40
+ readonly processing: boolean;
41
+ private readonly request;
42
+ /** @internal */
43
+ constructor(init: GeeqNodeInit);
44
+ /**
45
+ * Where a transaction built for this node must be POSTed.
46
+ *
47
+ * The SDK does not submit. This exists so an application posts to the node the SDK
48
+ * actually read from, instead of keeping a second copy of the URL that can drift.
49
+ */
50
+ get submitUrl(): string;
51
+ /** Read this node's current ledger. No caching — {@link GeeqChain} owns that. */
52
+ readLedger(options?: {
53
+ readonly signal?: AbortSignal;
54
+ }): Promise<GeeqLedger>;
55
+ toJSON(): Record<string, unknown>;
56
+ toString(): string;
57
+ }
@@ -0,0 +1,62 @@
1
+ import { readLedger } from '../net/read-ledger';
2
+ import { submitRoute } from '../net/routes';
3
+ /**
4
+ * One node, identified in its own chain's ledger.
5
+ *
6
+ * A node is only meaningful once a ledger has confirmed which actor it is: the number a
7
+ * transaction must carry is the node's own `nodeNumSelf`, checked with strict equality,
8
+ * and nothing outside the ledger reports it.
9
+ */
10
+ export class GeeqNode {
11
+ /** @internal */
12
+ constructor(init) {
13
+ this.url = init.url;
14
+ this.nodeNumber = init.nodeNumber;
15
+ this.host = init.host;
16
+ this.port = init.port;
17
+ this.role = init.role;
18
+ this.status = init.status;
19
+ this.processing = init.processing;
20
+ Object.defineProperty(this, 'request', {
21
+ value: Object.freeze({
22
+ transport: init.transport,
23
+ timeoutMs: init.timeoutMs,
24
+ retries: init.retries,
25
+ headers: init.headers,
26
+ }),
27
+ enumerable: false,
28
+ writable: false,
29
+ });
30
+ }
31
+ /**
32
+ * Where a transaction built for this node must be POSTed.
33
+ *
34
+ * The SDK does not submit. This exists so an application posts to the node the SDK
35
+ * actually read from, instead of keeping a second copy of the URL that can drift.
36
+ */
37
+ get submitUrl() {
38
+ return submitRoute(this.url);
39
+ }
40
+ /** Read this node's current ledger. No caching — {@link GeeqChain} owns that. */
41
+ async readLedger(options = {}) {
42
+ return readLedger(this.url, {
43
+ ...this.request,
44
+ ...(options.signal === undefined ? {} : { signal: options.signal }),
45
+ });
46
+ }
47
+ toJSON() {
48
+ return {
49
+ url: this.url,
50
+ nodeNumber: this.nodeNumber,
51
+ host: this.host,
52
+ port: this.port,
53
+ role: this.role,
54
+ status: this.status,
55
+ processing: this.processing,
56
+ };
57
+ }
58
+ toString() {
59
+ return `GeeqNode(${this.nodeNumber} at ${this.url}, ${this.role}/${this.status})`;
60
+ }
61
+ }
62
+ //# sourceMappingURL=geeq-node.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"geeq-node.js","sourceRoot":"","sources":["../../../src/chain/geeq-node.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAsB3C;;;;;;GAMG;AACH,MAAM,OAAO,QAAQ;IAkBnB,gBAAgB;IAChB,YAAY,IAAkB;QAC5B,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAA;QACnB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAA;QACjC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAA;QACrB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAA;QACrB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAA;QACrB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAA;QACzB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAA;QACjC,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,SAAS,EAAE;YACrC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC;gBACnB,SAAS,EAAE,IAAI,CAAC,SAAS;gBACzB,SAAS,EAAE,IAAI,CAAC,SAAS;gBACzB,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,OAAO,EAAE,IAAI,CAAC,OAAO;aACtB,CAAC;YACF,UAAU,EAAE,KAAK;YACjB,QAAQ,EAAE,KAAK;SAChB,CAAC,CAAA;IACJ,CAAC;IAED;;;;;OAKG;IACH,IAAI,SAAS;QACX,OAAO,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IAC9B,CAAC;IAED,iFAAiF;IACjF,KAAK,CAAC,UAAU,CAAC,UAA6C,EAAE;QAC9D,OAAO,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE;YAC1B,GAAG,IAAI,CAAC,OAAO;YACf,GAAG,CAAC,OAAO,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC;SACpE,CAAC,CAAA;IACJ,CAAC;IAED,MAAM;QACJ,OAAO;YACL,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,UAAU,EAAE,IAAI,CAAC,UAAU;SAC5B,CAAA;IACH,CAAC;IAED,QAAQ;QACN,OAAO,YAAY,IAAI,CAAC,UAAU,OAAO,IAAI,CAAC,GAAG,KAAK,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,GAAG,CAAA;IACnF,CAAC;CACF"}
@@ -0,0 +1,42 @@
1
+ /**
2
+ * Stops one account producing two transactions against one block.
3
+ *
4
+ * The ledger only reflects committed blocks, so building twice inside a block interval
5
+ * derives the same nonce twice — and the node invalidates **every** transaction in a
6
+ * duplicate-nonce group rather than keeping the first
7
+ * (geeq_node_core/src/validations/workers/joint/checks/9.nonce.ts). The user would see
8
+ * one success and lose both.
9
+ *
10
+ * Auto-incrementing instead was considered and rejected. The node's full check requires
11
+ * nonces consecutive from the ledger's, so handing out n+1 and then submitting only that
12
+ * one leaves a permanent gap. Since this SDK does not submit, it never learns which
13
+ * transactions actually went out, so it cannot safely keep a counter. Refusing turns a
14
+ * silent double loss into an error naming the ways forward — and an application that
15
+ * knows a build was never sent hands its nonce back with {@link release}.
16
+ */
17
+ export declare class NonceGuard {
18
+ /** Per account: the ledger block its last build was against, and that build's id. */
19
+ private readonly issued;
20
+ /**
21
+ * Whether claiming now would collide, without recording anything.
22
+ *
23
+ * Lets a caller tell "this account already built against this block" apart from
24
+ * "the ledger we are looking at is simply out of date", which are the same thing from
25
+ * a cached read and very different from a fresh one.
26
+ */
27
+ wouldCollide(accountKey: string, ledgerBlock: number): boolean;
28
+ /**
29
+ * Record that `accountKey` is taking a nonce at `ledgerBlock`, for the transaction
30
+ * identified by `transaction`.
31
+ *
32
+ * @throws a `nonce-collision` GeeqError if it already took one at that block.
33
+ */
34
+ claim(accountKey: string, ledgerBlock: number, nonce: number, transaction: string): void;
35
+ /**
36
+ * Give back the nonce a transaction claimed, because it will never be sent. Nothing
37
+ * happens unless it is still its account's latest claim.
38
+ */
39
+ release(transaction: string): void;
40
+ /** Forget every claim. For a key change, or after abandoning a built transaction. */
41
+ clear(): void;
42
+ }
@@ -0,0 +1,68 @@
1
+ import { nonceCollision } from '../errors';
2
+ /**
3
+ * Stops one account producing two transactions against one block.
4
+ *
5
+ * The ledger only reflects committed blocks, so building twice inside a block interval
6
+ * derives the same nonce twice — and the node invalidates **every** transaction in a
7
+ * duplicate-nonce group rather than keeping the first
8
+ * (geeq_node_core/src/validations/workers/joint/checks/9.nonce.ts). The user would see
9
+ * one success and lose both.
10
+ *
11
+ * Auto-incrementing instead was considered and rejected. The node's full check requires
12
+ * nonces consecutive from the ledger's, so handing out n+1 and then submitting only that
13
+ * one leaves a permanent gap. Since this SDK does not submit, it never learns which
14
+ * transactions actually went out, so it cannot safely keep a counter. Refusing turns a
15
+ * silent double loss into an error naming the ways forward — and an application that
16
+ * knows a build was never sent hands its nonce back with {@link release}.
17
+ */
18
+ export class NonceGuard {
19
+ constructor() {
20
+ /** Per account: the ledger block its last build was against, and that build's id. */
21
+ this.issued = new Map();
22
+ }
23
+ /**
24
+ * Whether claiming now would collide, without recording anything.
25
+ *
26
+ * Lets a caller tell "this account already built against this block" apart from
27
+ * "the ledger we are looking at is simply out of date", which are the same thing from
28
+ * a cached read and very different from a fresh one.
29
+ */
30
+ wouldCollide(accountKey, ledgerBlock) {
31
+ const previous = this.issued.get(accountKey);
32
+ return previous !== undefined && previous.block >= ledgerBlock;
33
+ }
34
+ /**
35
+ * Record that `accountKey` is taking a nonce at `ledgerBlock`, for the transaction
36
+ * identified by `transaction`.
37
+ *
38
+ * @throws a `nonce-collision` GeeqError if it already took one at that block.
39
+ */
40
+ claim(accountKey, ledgerBlock, nonce, transaction) {
41
+ const previous = this.issued.get(accountKey);
42
+ if (previous !== undefined && previous.block >= ledgerBlock) {
43
+ throw nonceCollision(`This account already has a transaction built with nonce ${nonce} against ` +
44
+ `block ${previous.block}, and the ledger has not advanced past it. Two ` +
45
+ 'transactions from one account sharing a nonce are both rejected, not just the ' +
46
+ 'second. If the first was never sent, discard(tx) it and build again. Otherwise ' +
47
+ 'submit it and wait for the next block, pass nonce: ' +
48
+ `${nonce + 1} explicitly if you mean to submit both together, or call ` +
49
+ 'refresh() once the chain has moved on.');
50
+ }
51
+ this.issued.set(accountKey, { block: ledgerBlock, transaction });
52
+ }
53
+ /**
54
+ * Give back the nonce a transaction claimed, because it will never be sent. Nothing
55
+ * happens unless it is still its account's latest claim.
56
+ */
57
+ release(transaction) {
58
+ for (const [accountKey, claim] of this.issued) {
59
+ if (claim.transaction === transaction)
60
+ this.issued.delete(accountKey);
61
+ }
62
+ }
63
+ /** Forget every claim. For a key change, or after abandoning a built transaction. */
64
+ clear() {
65
+ this.issued.clear();
66
+ }
67
+ }
68
+ //# sourceMappingURL=nonce-guard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nonce-guard.js","sourceRoot":"","sources":["../../../src/chain/nonce-guard.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAA;AAE1C;;;;;;;;;;;;;;;GAeG;AACH,MAAM,OAAO,UAAU;IAAvB;QACE,qFAAqF;QACpE,WAAM,GAAG,IAAI,GAAG,EAAkD,CAAA;IAoDrF,CAAC;IAlDC;;;;;;OAMG;IACH,YAAY,CAAC,UAAkB,EAAE,WAAmB;QAClD,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;QAC5C,OAAO,QAAQ,KAAK,SAAS,IAAI,QAAQ,CAAC,KAAK,IAAI,WAAW,CAAA;IAChE,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,UAAkB,EAAE,WAAmB,EAAE,KAAa,EAAE,WAAmB;QAC/E,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;QAE5C,IAAI,QAAQ,KAAK,SAAS,IAAI,QAAQ,CAAC,KAAK,IAAI,WAAW,EAAE,CAAC;YAC5D,MAAM,cAAc,CAClB,2DAA2D,KAAK,WAAW;gBACzE,SAAS,QAAQ,CAAC,KAAK,iDAAiD;gBACxE,gFAAgF;gBAChF,iFAAiF;gBACjF,qDAAqD;gBACrD,GAAG,KAAK,GAAG,CAAC,2DAA2D;gBACvE,wCAAwC,CAC3C,CAAA;QACH,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,CAAC,CAAA;IAClE,CAAC;IAED;;;OAGG;IACH,OAAO,CAAC,WAAmB;QACzB,KAAK,MAAM,CAAC,UAAU,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAC9C,IAAI,KAAK,CAAC,WAAW,KAAK,WAAW;gBAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAA;QACvE,CAAC;IACH,CAAC;IAED,qFAAqF;IACrF,KAAK;QACH,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAA;IACrB,CAAC;CACF"}
@@ -0,0 +1,40 @@
1
+ import type { GeeqLedger } from '../ledger/geeq-ledger';
2
+ import type { GeeqLedgerNode } from '../ledger/net-actors';
3
+ /**
4
+ * The port every Geeq node answers client traffic on.
5
+ *
6
+ * Nodes terminate TLS on 2082 and that is the only client-facing port; an endpoint
7
+ * given without one is resolved to it rather than to the scheme's default, because a
8
+ * request to 443 would fail opaquely in a browser with no way to tell why.
9
+ */
10
+ export declare const GEEQ_NODE_PORT = 2082;
11
+ /** The host part of a node URL, which is what the net actor list records. */
12
+ export declare function hostOf(url: string | URL): string;
13
+ /** Normalise a node URL to an origin with no trailing slash, so it is safe to append to. */
14
+ export declare function originOf(url: string | URL): string;
15
+ /**
16
+ * Normalise an ordinary service URL, leaving its port exactly as given.
17
+ *
18
+ * Distinct from {@link originOf} on purpose: a node directory is a normal web service
19
+ * on whatever port it was deployed on, so filling in the Geeq node port would send
20
+ * every request to the wrong place.
21
+ */
22
+ export declare function serviceOriginOf(url: string | URL): string;
23
+ export interface SelectNodeOptions {
24
+ /** Skip host matching entirely. Required behind a gateway or a DNS name. */
25
+ readonly nodeNumber?: number | undefined;
26
+ }
27
+ /**
28
+ * Choose the net actor record that a transaction should name.
29
+ *
30
+ * Matching is on **host only**. A record's `port` is the node's own listen port, while
31
+ * a client reaches it through a proxy on another one, so requiring both to agree finds
32
+ * nothing on a correctly deployed chain. Port is used solely to disambiguate when one
33
+ * address carries several records.
34
+ *
35
+ * This never silently retargets. A different node means a different address, a
36
+ * different certificate, a different CORS origin and a different operator seeing the
37
+ * transaction, so an unusable node is reported with its alternatives and the caller
38
+ * decides.
39
+ */
40
+ export declare function selectNode(ledger: GeeqLedger, endpoint: string | URL, options?: SelectNodeOptions): GeeqLedgerNode;
@@ -0,0 +1,114 @@
1
+ import { invalidArgument, nodeUnusable } from '../errors';
2
+ /**
3
+ * The port every Geeq node answers client traffic on.
4
+ *
5
+ * Nodes terminate TLS on 2082 and that is the only client-facing port; an endpoint
6
+ * given without one is resolved to it rather than to the scheme's default, because a
7
+ * request to 443 would fail opaquely in a browser with no way to tell why.
8
+ */
9
+ export const GEEQ_NODE_PORT = 2082;
10
+ /** The host part of a node URL, which is what the net actor list records. */
11
+ export function hostOf(url) {
12
+ try {
13
+ return new URL(String(url)).hostname;
14
+ }
15
+ catch (cause) {
16
+ throw invalidArgument(`endpoint must be an absolute URL such as https://1.2.3.4:2082, received ${JSON.stringify(String(url))}.`, cause);
17
+ }
18
+ }
19
+ /** Normalise a node URL to an origin with no trailing slash, so it is safe to append to. */
20
+ export function originOf(url) {
21
+ hostOf(url); // same validation, same message
22
+ const parsed = new URL(String(url));
23
+ const port = parsed.port === '' ? String(GEEQ_NODE_PORT) : parsed.port;
24
+ return `${parsed.protocol}//${parsed.hostname}:${port}${parsed.pathname.replace(/\/+$/u, '')}`;
25
+ }
26
+ /**
27
+ * Normalise an ordinary service URL, leaving its port exactly as given.
28
+ *
29
+ * Distinct from {@link originOf} on purpose: a node directory is a normal web service
30
+ * on whatever port it was deployed on, so filling in the Geeq node port would send
31
+ * every request to the wrong place.
32
+ */
33
+ export function serviceOriginOf(url) {
34
+ hostOf(url);
35
+ const parsed = new URL(String(url));
36
+ return `${parsed.protocol}//${parsed.host}${parsed.pathname.replace(/\/+$/u, '')}`;
37
+ }
38
+ function listAlternatives(ledger) {
39
+ const processing = ledger.processingNodes.filter((node) => !node.retiring);
40
+ if (processing.length === 0) {
41
+ return 'This ledger lists no node that is currently processing transactions.';
42
+ }
43
+ const listed = processing
44
+ .map((node) => `${node.host} (node ${node.nodeNumber})`)
45
+ .join(', ');
46
+ return `Nodes in this ledger that are processing: ${listed}.`;
47
+ }
48
+ function assertUsable(node, ledger) {
49
+ if (!node.processing) {
50
+ // Name the role and status verbatim: they are what the operator sees too, and the
51
+ // node's own rejection ('not processing') says nothing about which is wrong.
52
+ const detail = node.role === 'relay'
53
+ ? 'a relay registers no transaction handler at all'
54
+ : 'only anon-node, anchor-node or cert-node with status node or hub processes transactions';
55
+ throw nodeUnusable(`Node ${node.nodeNumber} at ${node.host} is a ${node.role} with status ` +
56
+ `"${node.status}", so it will not accept this transaction — ${detail}. ` +
57
+ listAlternatives(ledger));
58
+ }
59
+ if (node.retiring) {
60
+ // The node checks its own rotation deadline before accepting anything and answers
61
+ // 503 'Block chain is stopped' once it is within two blocks of it. That is knowable
62
+ // here, and a 503 naming a stopped chain is a badly misleading thing to hand someone
63
+ // whose chain is running perfectly well.
64
+ throw nodeUnusable(`Node ${node.nodeNumber} at ${node.host} leaves the active set at block ` +
65
+ `${node.retiresAtBlock} and the ledger is already at ${ledger.blockNumber}, so it ` +
66
+ 'will answer 503 "Block chain is stopped" rather than accept a transaction. This ' +
67
+ `is the node rotating out, not the chain halting. ${listAlternatives(ledger)}`);
68
+ }
69
+ return node;
70
+ }
71
+ /**
72
+ * Choose the net actor record that a transaction should name.
73
+ *
74
+ * Matching is on **host only**. A record's `port` is the node's own listen port, while
75
+ * a client reaches it through a proxy on another one, so requiring both to agree finds
76
+ * nothing on a correctly deployed chain. Port is used solely to disambiguate when one
77
+ * address carries several records.
78
+ *
79
+ * This never silently retargets. A different node means a different address, a
80
+ * different certificate, a different CORS origin and a different operator seeing the
81
+ * transaction, so an unusable node is reported with its alternatives and the caller
82
+ * decides.
83
+ */
84
+ export function selectNode(ledger, endpoint, options = {}) {
85
+ if (options.nodeNumber !== undefined) {
86
+ const named = ledger.findNode({ nodeNumber: options.nodeNumber });
87
+ if (named === undefined) {
88
+ throw nodeUnusable(`nodeNumber ${options.nodeNumber} is not in the net actor list of the ledger ` +
89
+ `served by ${String(endpoint)}, which lists ${ledger.nodes.length} records. ` +
90
+ listAlternatives(ledger));
91
+ }
92
+ return assertUsable(named, ledger);
93
+ }
94
+ const host = hostOf(endpoint);
95
+ const candidates = ledger.findNodes(host);
96
+ if (candidates.length === 0) {
97
+ // Almost always a hostname or a gateway: the list holds bare IPs and a browser
98
+ // cannot resolve a name to one, so there is nothing the SDK can infer here.
99
+ throw nodeUnusable(`${host} is not in the net actor list of the ledger it served ` +
100
+ `(${ledger.nodes.length} records, none at that address). A node is matched by ` +
101
+ 'its IP address, so a DNS name, a gateway or a proxy cannot be matched at all — ' +
102
+ `pass nodeNumber explicitly for those. ${listAlternatives(ledger)}`);
103
+ }
104
+ if (candidates.length === 1)
105
+ return assertUsable(candidates[0], ledger);
106
+ const processing = candidates.filter((node) => node.processing && !node.retiring);
107
+ if (processing.length === 1)
108
+ return processing[0];
109
+ const numbers = candidates.map((node) => node.nodeNumber).join(', ');
110
+ throw nodeUnusable(`${host} matches ${candidates.length} net actor records (node numbers ${numbers}) ` +
111
+ `and ${processing.length} of them are processing, so the SDK cannot choose. ` +
112
+ 'Pass nodeNumber explicitly.');
113
+ }
114
+ //# sourceMappingURL=select.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"select.js","sourceRoot":"","sources":["../../../src/chain/select.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,35 @@
1
+ /** Account ids and public keys are both 32 bytes. */
2
+ export declare const ACCOUNT_ID_BYTES = 32;
3
+ export declare const PUBLIC_KEY_BYTES = 32;
4
+ /**
5
+ * Any way of naming an account that does not need the engine.
6
+ *
7
+ * Structural on purpose: a {@link GeeqKeypair} already carries `accountId`, so it
8
+ * satisfies this without the crypto layer importing the keypair type and without the
9
+ * caller unwrapping anything.
10
+ */
11
+ export type AccountRef = Uint8Array | {
12
+ readonly accountId: Uint8Array;
13
+ } | {
14
+ readonly publicKey: Uint8Array;
15
+ };
16
+ /**
17
+ * Derive the 32-byte account id for a public key.
18
+ *
19
+ * This is a pure hash — it needs no engine and no network, so it works before
20
+ * {@link initGeeq} has resolved.
21
+ */
22
+ export declare function accountIdFromPublicKey(publicKey: Uint8Array): Uint8Array;
23
+ /**
24
+ * Resolve any {@link AccountRef} to a 32-byte account id.
25
+ *
26
+ * Shared by the address layer and the ledger layer: both need to turn "whatever the
27
+ * caller had to hand" into the one value records are keyed by, and two copies of this
28
+ * would drift. Pure — no engine, no network.
29
+ *
30
+ * `accountId` is checked before `publicKey` so that a keypair, which carries both,
31
+ * takes the cheap path instead of re-hashing its own public key.
32
+ *
33
+ * @internal
34
+ */
35
+ export declare function resolveAccountId(account: AccountRef): Uint8Array;
@@ -0,0 +1,58 @@
1
+ import { blake3 } from '@noble/hashes/blake3';
2
+ import { invalidArgument, invalidKey } from '../errors';
3
+ /** Account ids and public keys are both 32 bytes. */
4
+ export const ACCOUNT_ID_BYTES = 32;
5
+ export const PUBLIC_KEY_BYTES = 32;
6
+ /**
7
+ * Derive the 32-byte account id for a public key.
8
+ *
9
+ * This is a pure hash — it needs no engine and no network, so it works before
10
+ * {@link initGeeq} has resolved.
11
+ */
12
+ export function accountIdFromPublicKey(publicKey) {
13
+ if (publicKey.length !== PUBLIC_KEY_BYTES) {
14
+ throw invalidKey(`A public key must be ${PUBLIC_KEY_BYTES} bytes, received ${publicKey.length}.`);
15
+ }
16
+ return blake3(publicKey, { dkLen: ACCOUNT_ID_BYTES });
17
+ }
18
+ /**
19
+ * Resolve any {@link AccountRef} to a 32-byte account id.
20
+ *
21
+ * Shared by the address layer and the ledger layer: both need to turn "whatever the
22
+ * caller had to hand" into the one value records are keyed by, and two copies of this
23
+ * would drift. Pure — no engine, no network.
24
+ *
25
+ * `accountId` is checked before `publicKey` so that a keypair, which carries both,
26
+ * takes the cheap path instead of re-hashing its own public key.
27
+ *
28
+ * @internal
29
+ */
30
+ export function resolveAccountId(account) {
31
+ if (account instanceof Uint8Array) {
32
+ if (account.length !== ACCOUNT_ID_BYTES) {
33
+ throw invalidKey(`An account id must be ${ACCOUNT_ID_BYTES} bytes, received ${account.length}.`);
34
+ }
35
+ return account;
36
+ }
37
+ if (account !== null && typeof account === 'object') {
38
+ const { accountId } = account;
39
+ if (accountId !== undefined) {
40
+ if (!(accountId instanceof Uint8Array)) {
41
+ throw invalidKey('accountId must be a Uint8Array.');
42
+ }
43
+ if (accountId.length !== ACCOUNT_ID_BYTES) {
44
+ throw invalidKey(`An account id must be ${ACCOUNT_ID_BYTES} bytes, received ${accountId.length}.`);
45
+ }
46
+ return accountId;
47
+ }
48
+ const { publicKey } = account;
49
+ if (publicKey !== undefined) {
50
+ if (!(publicKey instanceof Uint8Array)) {
51
+ throw invalidKey('publicKey must be a Uint8Array.');
52
+ }
53
+ return accountIdFromPublicKey(publicKey);
54
+ }
55
+ }
56
+ throw invalidArgument(`Provide a keypair, a ${ACCOUNT_ID_BYTES}-byte accountId, or a ${PUBLIC_KEY_BYTES}-byte publicKey.`);
57
+ }
58
+ //# sourceMappingURL=account-id.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"account-id.js","sourceRoot":"","sources":["../../../src/crypto/account-id.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAA;AAC7C,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,WAAW,CAAA;AAEvD,qDAAqD;AACrD,MAAM,CAAC,MAAM,gBAAgB,GAAG,EAAE,CAAA;AAClC,MAAM,CAAC,MAAM,gBAAgB,GAAG,EAAE,CAAA;AAclC;;;;;GAKG;AACH,MAAM,UAAU,sBAAsB,CAAC,SAAqB;IAC1D,IAAI,SAAS,CAAC,MAAM,KAAK,gBAAgB,EAAE,CAAC;QAC1C,MAAM,UAAU,CACd,wBAAwB,gBAAgB,oBAAoB,SAAS,CAAC,MAAM,GAAG,CAChF,CAAA;IACH,CAAC;IACD,OAAO,MAAM,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE,gBAAgB,EAAE,CAAC,CAAA;AACvD,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,gBAAgB,CAAC,OAAmB;IAClD,IAAI,OAAO,YAAY,UAAU,EAAE,CAAC;QAClC,IAAI,OAAO,CAAC,MAAM,KAAK,gBAAgB,EAAE,CAAC;YACxC,MAAM,UAAU,CACd,yBAAyB,gBAAgB,oBAAoB,OAAO,CAAC,MAAM,GAAG,CAC/E,CAAA;QACH,CAAC;QACD,OAAO,OAAO,CAAA;IAChB,CAAC;IAED,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;QACpD,MAAM,EAAE,SAAS,EAAE,GAAG,OAAkC,CAAA;QACxD,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;YAC5B,IAAI,CAAC,CAAC,SAAS,YAAY,UAAU,CAAC,EAAE,CAAC;gBACvC,MAAM,UAAU,CAAC,iCAAiC,CAAC,CAAA;YACrD,CAAC;YACD,IAAI,SAAS,CAAC,MAAM,KAAK,gBAAgB,EAAE,CAAC;gBAC1C,MAAM,UAAU,CACd,yBAAyB,gBAAgB,oBAAoB,SAAS,CAAC,MAAM,GAAG,CACjF,CAAA;YACH,CAAC;YACD,OAAO,SAAS,CAAA;QAClB,CAAC;QAED,MAAM,EAAE,SAAS,EAAE,GAAG,OAAkC,CAAA;QACxD,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;YAC5B,IAAI,CAAC,CAAC,SAAS,YAAY,UAAU,CAAC,EAAE,CAAC;gBACvC,MAAM,UAAU,CAAC,iCAAiC,CAAC,CAAA;YACrD,CAAC;YACD,OAAO,sBAAsB,CAAC,SAAS,CAAC,CAAA;QAC1C,CAAC;IACH,CAAC;IAED,MAAM,eAAe,CACnB,wBAAwB,gBAAgB,yBAAyB,gBAAgB,kBAAkB,CACpG,CAAA;AACH,CAAC"}
@@ -0,0 +1,24 @@
1
+ import type { GeeqKeypair, MnemonicOptions } from '../types';
2
+ /** Create a brand new random keypair. Synchronous; requires a loaded engine. */
3
+ export declare function generateKeypairSync(): GeeqKeypair;
4
+ /** Create a brand new random keypair, loading the engine if needed. */
5
+ export declare function generateKeypair(): Promise<GeeqKeypair>;
6
+ /** Re-create a keypair from stored public and private key bytes. */
7
+ export declare function importKeypairSync(publicKey: Uint8Array, privateKey: Uint8Array): GeeqKeypair;
8
+ /** Re-create a keypair from stored key bytes, loading the engine if needed. */
9
+ export declare function importKeypair(publicKey: Uint8Array, privateKey: Uint8Array): Promise<GeeqKeypair>;
10
+ /** Recover a keypair from its 32-byte secret key alone. */
11
+ export declare function keypairFromSecretKeySync(privateKey: Uint8Array): GeeqKeypair;
12
+ /** Recover a keypair from its secret key, loading the engine if needed. */
13
+ export declare function keypairFromSecretKey(privateKey: Uint8Array): Promise<GeeqKeypair>;
14
+ /**
15
+ * Derive a keypair from a BIP-39 mnemonic along Geeq's standard derivation path.
16
+ *
17
+ * The same mnemonic and options always produce the same keypair, so this is how a
18
+ * wallet is restored on another device.
19
+ */
20
+ export declare function keypairFromMnemonicSync(mnemonic: string, options?: MnemonicOptions): GeeqKeypair;
21
+ /** Derive a keypair from a mnemonic, loading the engine if needed. */
22
+ export declare function keypairFromMnemonic(mnemonic: string, options?: MnemonicOptions): Promise<GeeqKeypair>;
23
+ /** Verify an Ed25519 signature. Requires a loaded engine. */
24
+ export declare function verifySignature(publicKey: Uint8Array, signature: Uint8Array, message: Uint8Array): boolean;