tenzro-wallet 0.1.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 (471) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +128 -0
  3. package/dist/balance/aggregator.d.ts +16 -0
  4. package/dist/balance/aggregator.d.ts.map +1 -0
  5. package/dist/balance/aggregator.js +73 -0
  6. package/dist/balance/aggregator.js.map +1 -0
  7. package/dist/balance/index.d.ts +3 -0
  8. package/dist/balance/index.d.ts.map +1 -0
  9. package/dist/balance/index.js +2 -0
  10. package/dist/balance/index.js.map +1 -0
  11. package/dist/consent/index.d.ts +3 -0
  12. package/dist/consent/index.d.ts.map +1 -0
  13. package/dist/consent/index.js +2 -0
  14. package/dist/consent/index.js.map +1 -0
  15. package/dist/consent/policy.d.ts +27 -0
  16. package/dist/consent/policy.d.ts.map +1 -0
  17. package/dist/consent/policy.js +121 -0
  18. package/dist/consent/policy.js.map +1 -0
  19. package/dist/crypto/eip1559.d.ts +53 -0
  20. package/dist/crypto/eip1559.d.ts.map +1 -0
  21. package/dist/crypto/eip1559.js +79 -0
  22. package/dist/crypto/eip1559.js.map +1 -0
  23. package/dist/crypto/keccak256.d.ts +20 -0
  24. package/dist/crypto/keccak256.d.ts.map +1 -0
  25. package/dist/crypto/keccak256.js +167 -0
  26. package/dist/crypto/keccak256.js.map +1 -0
  27. package/dist/crypto/rlp.d.ts +30 -0
  28. package/dist/crypto/rlp.d.ts.map +1 -0
  29. package/dist/crypto/rlp.js +165 -0
  30. package/dist/crypto/rlp.js.map +1 -0
  31. package/dist/crypto/sha256.d.ts +14 -0
  32. package/dist/crypto/sha256.d.ts.map +1 -0
  33. package/dist/crypto/sha256.js +33 -0
  34. package/dist/crypto/sha256.js.map +1 -0
  35. package/dist/crypto/solana.d.ts +86 -0
  36. package/dist/crypto/solana.d.ts.map +1 -0
  37. package/dist/crypto/solana.js +218 -0
  38. package/dist/crypto/solana.js.map +1 -0
  39. package/dist/custody/frost/backend.d.ts +59 -0
  40. package/dist/custody/frost/backend.d.ts.map +1 -0
  41. package/dist/custody/frost/backend.js +83 -0
  42. package/dist/custody/frost/backend.js.map +1 -0
  43. package/dist/custody/frost/coordinator.d.ts +148 -0
  44. package/dist/custody/frost/coordinator.d.ts.map +1 -0
  45. package/dist/custody/frost/coordinator.js +58 -0
  46. package/dist/custody/frost/coordinator.js.map +1 -0
  47. package/dist/custody/frost/ed25519-driver.d.ts +30 -0
  48. package/dist/custody/frost/ed25519-driver.d.ts.map +1 -0
  49. package/dist/custody/frost/ed25519-driver.js +76 -0
  50. package/dist/custody/frost/ed25519-driver.js.map +1 -0
  51. package/dist/custody/frost/http-adapter.d.ts +77 -0
  52. package/dist/custody/frost/http-adapter.d.ts.map +1 -0
  53. package/dist/custody/frost/http-adapter.js +168 -0
  54. package/dist/custody/frost/http-adapter.js.map +1 -0
  55. package/dist/custody/frost/hybrid-driver.d.ts +37 -0
  56. package/dist/custody/frost/hybrid-driver.d.ts.map +1 -0
  57. package/dist/custody/frost/hybrid-driver.js +60 -0
  58. package/dist/custody/frost/hybrid-driver.js.map +1 -0
  59. package/dist/custody/frost/index.d.ts +12 -0
  60. package/dist/custody/frost/index.d.ts.map +1 -0
  61. package/dist/custody/frost/index.js +6 -0
  62. package/dist/custody/frost/index.js.map +1 -0
  63. package/dist/custody/frost/secp256k1-driver.d.ts +26 -0
  64. package/dist/custody/frost/secp256k1-driver.d.ts.map +1 -0
  65. package/dist/custody/frost/secp256k1-driver.js +78 -0
  66. package/dist/custody/frost/secp256k1-driver.js.map +1 -0
  67. package/dist/custody/index.d.ts +9 -0
  68. package/dist/custody/index.d.ts.map +1 -0
  69. package/dist/custody/index.js +11 -0
  70. package/dist/custody/index.js.map +1 -0
  71. package/dist/custody/internal-mpc.d.ts +14 -0
  72. package/dist/custody/internal-mpc.d.ts.map +1 -0
  73. package/dist/custody/internal-mpc.js +40 -0
  74. package/dist/custody/internal-mpc.js.map +1 -0
  75. package/dist/custody/mldsa/coordinator.d.ts +63 -0
  76. package/dist/custody/mldsa/coordinator.d.ts.map +1 -0
  77. package/dist/custody/mldsa/coordinator.js +44 -0
  78. package/dist/custody/mldsa/coordinator.js.map +1 -0
  79. package/dist/custody/mldsa/driver.d.ts +23 -0
  80. package/dist/custody/mldsa/driver.d.ts.map +1 -0
  81. package/dist/custody/mldsa/driver.js +43 -0
  82. package/dist/custody/mldsa/driver.js.map +1 -0
  83. package/dist/custody/mldsa/http-adapter.d.ts +59 -0
  84. package/dist/custody/mldsa/http-adapter.d.ts.map +1 -0
  85. package/dist/custody/mldsa/http-adapter.js +103 -0
  86. package/dist/custody/mldsa/http-adapter.js.map +1 -0
  87. package/dist/custody/mldsa/index.d.ts +7 -0
  88. package/dist/custody/mldsa/index.d.ts.map +1 -0
  89. package/dist/custody/mldsa/index.js +4 -0
  90. package/dist/custody/mldsa/index.js.map +1 -0
  91. package/dist/custody/pairing/http-adapter.d.ts +40 -0
  92. package/dist/custody/pairing/http-adapter.d.ts.map +1 -0
  93. package/dist/custody/pairing/http-adapter.js +113 -0
  94. package/dist/custody/pairing/http-adapter.js.map +1 -0
  95. package/dist/custody/pairing/index.d.ts +10 -0
  96. package/dist/custody/pairing/index.d.ts.map +1 -0
  97. package/dist/custody/pairing/index.js +8 -0
  98. package/dist/custody/pairing/index.js.map +1 -0
  99. package/dist/custody/pairing/port.d.ts +121 -0
  100. package/dist/custody/pairing/port.d.ts.map +1 -0
  101. package/dist/custody/pairing/port.js +40 -0
  102. package/dist/custody/pairing/port.js.map +1 -0
  103. package/dist/custody/passkey-share/http-adapter.d.ts +77 -0
  104. package/dist/custody/passkey-share/http-adapter.d.ts.map +1 -0
  105. package/dist/custody/passkey-share/http-adapter.js +125 -0
  106. package/dist/custody/passkey-share/http-adapter.js.map +1 -0
  107. package/dist/custody/passkey-share/index.d.ts +7 -0
  108. package/dist/custody/passkey-share/index.d.ts.map +1 -0
  109. package/dist/custody/passkey-share/index.js +4 -0
  110. package/dist/custody/passkey-share/index.js.map +1 -0
  111. package/dist/custody/passkey-share/unwrapper.d.ts +174 -0
  112. package/dist/custody/passkey-share/unwrapper.d.ts.map +1 -0
  113. package/dist/custody/passkey-share/unwrapper.js +132 -0
  114. package/dist/custody/passkey-share/unwrapper.js.map +1 -0
  115. package/dist/custody/passkey-share/webauthn-adapter.d.ts +112 -0
  116. package/dist/custody/passkey-share/webauthn-adapter.d.ts.map +1 -0
  117. package/dist/custody/passkey-share/webauthn-adapter.js +150 -0
  118. package/dist/custody/passkey-share/webauthn-adapter.js.map +1 -0
  119. package/dist/custody/surface-key-id.d.ts +15 -0
  120. package/dist/custody/surface-key-id.d.ts.map +1 -0
  121. package/dist/custody/surface-key-id.js +25 -0
  122. package/dist/custody/surface-key-id.js.map +1 -0
  123. package/dist/dapp/eip6963.d.ts +64 -0
  124. package/dist/dapp/eip6963.d.ts.map +1 -0
  125. package/dist/dapp/eip6963.js +55 -0
  126. package/dist/dapp/eip6963.js.map +1 -0
  127. package/dist/dapp/index.d.ts +21 -0
  128. package/dist/dapp/index.d.ts.map +1 -0
  129. package/dist/dapp/index.js +24 -0
  130. package/dist/dapp/index.js.map +1 -0
  131. package/dist/identity/delegate-set.d.ts +57 -0
  132. package/dist/identity/delegate-set.d.ts.map +1 -0
  133. package/dist/identity/delegate-set.js +85 -0
  134. package/dist/identity/delegate-set.js.map +1 -0
  135. package/dist/identity/did.d.ts +17 -0
  136. package/dist/identity/did.d.ts.map +1 -0
  137. package/dist/identity/did.js +60 -0
  138. package/dist/identity/did.js.map +1 -0
  139. package/dist/identity/index.d.ts +14 -0
  140. package/dist/identity/index.d.ts.map +1 -0
  141. package/dist/identity/index.js +8 -0
  142. package/dist/identity/index.js.map +1 -0
  143. package/dist/identity/provision.d.ts +13 -0
  144. package/dist/identity/provision.d.ts.map +1 -0
  145. package/dist/identity/provision.js +151 -0
  146. package/dist/identity/provision.js.map +1 -0
  147. package/dist/identity/provisioning-http-adapter.d.ts +81 -0
  148. package/dist/identity/provisioning-http-adapter.d.ts.map +1 -0
  149. package/dist/identity/provisioning-http-adapter.js +114 -0
  150. package/dist/identity/provisioning-http-adapter.js.map +1 -0
  151. package/dist/identity/recovery-http-adapter.d.ts +83 -0
  152. package/dist/identity/recovery-http-adapter.d.ts.map +1 -0
  153. package/dist/identity/recovery-http-adapter.js +139 -0
  154. package/dist/identity/recovery-http-adapter.js.map +1 -0
  155. package/dist/identity/wallet-new.d.ts +132 -0
  156. package/dist/identity/wallet-new.d.ts.map +1 -0
  157. package/dist/identity/wallet-new.js +94 -0
  158. package/dist/identity/wallet-new.js.map +1 -0
  159. package/dist/identity/wallet-recover.d.ts +116 -0
  160. package/dist/identity/wallet-recover.d.ts.map +1 -0
  161. package/dist/identity/wallet-recover.js +95 -0
  162. package/dist/identity/wallet-recover.js.map +1 -0
  163. package/dist/index.d.ts +12 -0
  164. package/dist/index.d.ts.map +1 -0
  165. package/dist/index.js +11 -0
  166. package/dist/index.js.map +1 -0
  167. package/dist/kernel.d.ts +119 -0
  168. package/dist/kernel.d.ts.map +1 -0
  169. package/dist/kernel.js +144 -0
  170. package/dist/kernel.js.map +1 -0
  171. package/dist/ports/adapters/tenzro-identity-adapter.d.ts +44 -0
  172. package/dist/ports/adapters/tenzro-identity-adapter.d.ts.map +1 -0
  173. package/dist/ports/adapters/tenzro-identity-adapter.js +60 -0
  174. package/dist/ports/adapters/tenzro-identity-adapter.js.map +1 -0
  175. package/dist/ports/adapters/tenzro-sdk-adapter.d.ts +86 -0
  176. package/dist/ports/adapters/tenzro-sdk-adapter.d.ts.map +1 -0
  177. package/dist/ports/adapters/tenzro-sdk-adapter.js +100 -0
  178. package/dist/ports/adapters/tenzro-sdk-adapter.js.map +1 -0
  179. package/dist/ports/agent/acp.d.ts +66 -0
  180. package/dist/ports/agent/acp.d.ts.map +1 -0
  181. package/dist/ports/agent/acp.js +27 -0
  182. package/dist/ports/agent/acp.js.map +1 -0
  183. package/dist/ports/agent/adapters/acp-adapter.d.ts +67 -0
  184. package/dist/ports/agent/adapters/acp-adapter.d.ts.map +1 -0
  185. package/dist/ports/agent/adapters/acp-adapter.js +70 -0
  186. package/dist/ports/agent/adapters/acp-adapter.js.map +1 -0
  187. package/dist/ports/agent/adapters/agent-bond-adapter.d.ts +31 -0
  188. package/dist/ports/agent/adapters/agent-bond-adapter.d.ts.map +1 -0
  189. package/dist/ports/agent/adapters/agent-bond-adapter.js +82 -0
  190. package/dist/ports/agent/adapters/agent-bond-adapter.js.map +1 -0
  191. package/dist/ports/agent/adapters/agent-payment-adapter.d.ts +66 -0
  192. package/dist/ports/agent/adapters/agent-payment-adapter.d.ts.map +1 -0
  193. package/dist/ports/agent/adapters/agent-payment-adapter.js +75 -0
  194. package/dist/ports/agent/adapters/agent-payment-adapter.js.map +1 -0
  195. package/dist/ports/agent/adapters/ap2-adapter.d.ts +28 -0
  196. package/dist/ports/agent/adapters/ap2-adapter.d.ts.map +1 -0
  197. package/dist/ports/agent/adapters/ap2-adapter.js +97 -0
  198. package/dist/ports/agent/adapters/ap2-adapter.js.map +1 -0
  199. package/dist/ports/agent/adapters/auth-approval-adapter.d.ts +26 -0
  200. package/dist/ports/agent/adapters/auth-approval-adapter.d.ts.map +1 -0
  201. package/dist/ports/agent/adapters/auth-approval-adapter.js +37 -0
  202. package/dist/ports/agent/adapters/auth-approval-adapter.js.map +1 -0
  203. package/dist/ports/agent/adapters/erc7802-adapter.d.ts +30 -0
  204. package/dist/ports/agent/adapters/erc7802-adapter.d.ts.map +1 -0
  205. package/dist/ports/agent/adapters/erc7802-adapter.js +60 -0
  206. package/dist/ports/agent/adapters/erc7802-adapter.js.map +1 -0
  207. package/dist/ports/agent/adapters/erc8004-adapter.d.ts +54 -0
  208. package/dist/ports/agent/adapters/erc8004-adapter.d.ts.map +1 -0
  209. package/dist/ports/agent/adapters/erc8004-adapter.js +53 -0
  210. package/dist/ports/agent/adapters/erc8004-adapter.js.map +1 -0
  211. package/dist/ports/agent/adapters/escrow-adapter.d.ts +33 -0
  212. package/dist/ports/agent/adapters/escrow-adapter.d.ts.map +1 -0
  213. package/dist/ports/agent/adapters/escrow-adapter.js +109 -0
  214. package/dist/ports/agent/adapters/escrow-adapter.js.map +1 -0
  215. package/dist/ports/agent/adapters/fee-estimator-adapter.d.ts +31 -0
  216. package/dist/ports/agent/adapters/fee-estimator-adapter.d.ts.map +1 -0
  217. package/dist/ports/agent/adapters/fee-estimator-adapter.js +103 -0
  218. package/dist/ports/agent/adapters/fee-estimator-adapter.js.map +1 -0
  219. package/dist/ports/agent/adapters/htlc-escrow-adapter.d.ts +68 -0
  220. package/dist/ports/agent/adapters/htlc-escrow-adapter.d.ts.map +1 -0
  221. package/dist/ports/agent/adapters/htlc-escrow-adapter.js +131 -0
  222. package/dist/ports/agent/adapters/htlc-escrow-adapter.js.map +1 -0
  223. package/dist/ports/agent/adapters/insurance-adapter.d.ts +32 -0
  224. package/dist/ports/agent/adapters/insurance-adapter.d.ts.map +1 -0
  225. package/dist/ports/agent/adapters/insurance-adapter.js +103 -0
  226. package/dist/ports/agent/adapters/insurance-adapter.js.map +1 -0
  227. package/dist/ports/agent/adapters/lifecycle-adapter.d.ts +26 -0
  228. package/dist/ports/agent/adapters/lifecycle-adapter.d.ts.map +1 -0
  229. package/dist/ports/agent/adapters/lifecycle-adapter.js +136 -0
  230. package/dist/ports/agent/adapters/lifecycle-adapter.js.map +1 -0
  231. package/dist/ports/agent/adapters/nanopayment-adapter.d.ts +62 -0
  232. package/dist/ports/agent/adapters/nanopayment-adapter.d.ts.map +1 -0
  233. package/dist/ports/agent/adapters/nanopayment-adapter.js +76 -0
  234. package/dist/ports/agent/adapters/nanopayment-adapter.js.map +1 -0
  235. package/dist/ports/agent/adapters/payment-rails-adapter.d.ts +67 -0
  236. package/dist/ports/agent/adapters/payment-rails-adapter.d.ts.map +1 -0
  237. package/dist/ports/agent/adapters/payment-rails-adapter.js +108 -0
  238. package/dist/ports/agent/adapters/payment-rails-adapter.js.map +1 -0
  239. package/dist/ports/agent/adapters/principal-chain-adapter.d.ts +23 -0
  240. package/dist/ports/agent/adapters/principal-chain-adapter.d.ts.map +1 -0
  241. package/dist/ports/agent/adapters/principal-chain-adapter.js +156 -0
  242. package/dist/ports/agent/adapters/principal-chain-adapter.js.map +1 -0
  243. package/dist/ports/agent/adapters/session-key-adapter.d.ts +45 -0
  244. package/dist/ports/agent/adapters/session-key-adapter.d.ts.map +1 -0
  245. package/dist/ports/agent/adapters/session-key-adapter.js +80 -0
  246. package/dist/ports/agent/adapters/session-key-adapter.js.map +1 -0
  247. package/dist/ports/agent/adapters/tee-attestation-adapter.d.ts +32 -0
  248. package/dist/ports/agent/adapters/tee-attestation-adapter.d.ts.map +1 -0
  249. package/dist/ports/agent/adapters/tee-attestation-adapter.js +38 -0
  250. package/dist/ports/agent/adapters/tee-attestation-adapter.js.map +1 -0
  251. package/dist/ports/agent/agent-bond.d.ts +80 -0
  252. package/dist/ports/agent/agent-bond.d.ts.map +1 -0
  253. package/dist/ports/agent/agent-bond.js +23 -0
  254. package/dist/ports/agent/agent-bond.js.map +1 -0
  255. package/dist/ports/agent/agent-payment.d.ts +72 -0
  256. package/dist/ports/agent/agent-payment.d.ts.map +1 -0
  257. package/dist/ports/agent/agent-payment.js +17 -0
  258. package/dist/ports/agent/agent-payment.js.map +1 -0
  259. package/dist/ports/agent/ap2.d.ts +104 -0
  260. package/dist/ports/agent/ap2.d.ts.map +1 -0
  261. package/dist/ports/agent/ap2.js +22 -0
  262. package/dist/ports/agent/ap2.js.map +1 -0
  263. package/dist/ports/agent/auth-approval.d.ts +40 -0
  264. package/dist/ports/agent/auth-approval.d.ts.map +1 -0
  265. package/dist/ports/agent/auth-approval.js +23 -0
  266. package/dist/ports/agent/auth-approval.js.map +1 -0
  267. package/dist/ports/agent/erc7802.d.ts +94 -0
  268. package/dist/ports/agent/erc7802.d.ts.map +1 -0
  269. package/dist/ports/agent/erc7802.js +30 -0
  270. package/dist/ports/agent/erc7802.js.map +1 -0
  271. package/dist/ports/agent/erc8004.d.ts +57 -0
  272. package/dist/ports/agent/erc8004.d.ts.map +1 -0
  273. package/dist/ports/agent/erc8004.js +20 -0
  274. package/dist/ports/agent/erc8004.js.map +1 -0
  275. package/dist/ports/agent/escrow.d.ts +74 -0
  276. package/dist/ports/agent/escrow.d.ts.map +1 -0
  277. package/dist/ports/agent/escrow.js +18 -0
  278. package/dist/ports/agent/escrow.js.map +1 -0
  279. package/dist/ports/agent/fee-estimator.d.ts +71 -0
  280. package/dist/ports/agent/fee-estimator.d.ts.map +1 -0
  281. package/dist/ports/agent/fee-estimator.js +21 -0
  282. package/dist/ports/agent/fee-estimator.js.map +1 -0
  283. package/dist/ports/agent/htlc-escrow.d.ts +94 -0
  284. package/dist/ports/agent/htlc-escrow.d.ts.map +1 -0
  285. package/dist/ports/agent/htlc-escrow.js +25 -0
  286. package/dist/ports/agent/htlc-escrow.js.map +1 -0
  287. package/dist/ports/agent/index.d.ts +58 -0
  288. package/dist/ports/agent/index.d.ts.map +1 -0
  289. package/dist/ports/agent/index.js +24 -0
  290. package/dist/ports/agent/index.js.map +1 -0
  291. package/dist/ports/agent/insurance.d.ts +65 -0
  292. package/dist/ports/agent/insurance.d.ts.map +1 -0
  293. package/dist/ports/agent/insurance.js +18 -0
  294. package/dist/ports/agent/insurance.js.map +1 -0
  295. package/dist/ports/agent/lifecycle.d.ts +69 -0
  296. package/dist/ports/agent/lifecycle.d.ts.map +1 -0
  297. package/dist/ports/agent/lifecycle.js +17 -0
  298. package/dist/ports/agent/lifecycle.js.map +1 -0
  299. package/dist/ports/agent/nanopayment.d.ts +72 -0
  300. package/dist/ports/agent/nanopayment.d.ts.map +1 -0
  301. package/dist/ports/agent/nanopayment.js +16 -0
  302. package/dist/ports/agent/nanopayment.js.map +1 -0
  303. package/dist/ports/agent/payment-rails.d.ts +140 -0
  304. package/dist/ports/agent/payment-rails.d.ts.map +1 -0
  305. package/dist/ports/agent/payment-rails.js +25 -0
  306. package/dist/ports/agent/payment-rails.js.map +1 -0
  307. package/dist/ports/agent/principal-chain.d.ts +95 -0
  308. package/dist/ports/agent/principal-chain.d.ts.map +1 -0
  309. package/dist/ports/agent/principal-chain.js +16 -0
  310. package/dist/ports/agent/principal-chain.js.map +1 -0
  311. package/dist/ports/agent/session-key.d.ts +94 -0
  312. package/dist/ports/agent/session-key.d.ts.map +1 -0
  313. package/dist/ports/agent/session-key.js +31 -0
  314. package/dist/ports/agent/session-key.js.map +1 -0
  315. package/dist/ports/agent/tee-attestation.d.ts +51 -0
  316. package/dist/ports/agent/tee-attestation.d.ts.map +1 -0
  317. package/dist/ports/agent/tee-attestation.js +28 -0
  318. package/dist/ports/agent/tee-attestation.js.map +1 -0
  319. package/dist/ports/bridge/adapters/bridge-adapter-base.d.ts +47 -0
  320. package/dist/ports/bridge/adapters/bridge-adapter-base.d.ts.map +1 -0
  321. package/dist/ports/bridge/adapters/bridge-adapter-base.js +144 -0
  322. package/dist/ports/bridge/adapters/bridge-adapter-base.js.map +1 -0
  323. package/dist/ports/bridge/adapters/canton-bridge-adapter.d.ts +30 -0
  324. package/dist/ports/bridge/adapters/canton-bridge-adapter.d.ts.map +1 -0
  325. package/dist/ports/bridge/adapters/canton-bridge-adapter.js +31 -0
  326. package/dist/ports/bridge/adapters/canton-bridge-adapter.js.map +1 -0
  327. package/dist/ports/bridge/adapters/ccip-adapter.d.ts +30 -0
  328. package/dist/ports/bridge/adapters/ccip-adapter.d.ts.map +1 -0
  329. package/dist/ports/bridge/adapters/ccip-adapter.js +31 -0
  330. package/dist/ports/bridge/adapters/ccip-adapter.js.map +1 -0
  331. package/dist/ports/bridge/adapters/debridge-adapter.d.ts +27 -0
  332. package/dist/ports/bridge/adapters/debridge-adapter.d.ts.map +1 -0
  333. package/dist/ports/bridge/adapters/debridge-adapter.js +28 -0
  334. package/dist/ports/bridge/adapters/debridge-adapter.js.map +1 -0
  335. package/dist/ports/bridge/adapters/layerzero-adapter.d.ts +30 -0
  336. package/dist/ports/bridge/adapters/layerzero-adapter.d.ts.map +1 -0
  337. package/dist/ports/bridge/adapters/layerzero-adapter.js +31 -0
  338. package/dist/ports/bridge/adapters/layerzero-adapter.js.map +1 -0
  339. package/dist/ports/bridge/adapters/lifi-adapter.d.ts +48 -0
  340. package/dist/ports/bridge/adapters/lifi-adapter.d.ts.map +1 -0
  341. package/dist/ports/bridge/adapters/lifi-adapter.js +49 -0
  342. package/dist/ports/bridge/adapters/lifi-adapter.js.map +1 -0
  343. package/dist/ports/bridge/adapters/wormhole-adapter.d.ts +26 -0
  344. package/dist/ports/bridge/adapters/wormhole-adapter.d.ts.map +1 -0
  345. package/dist/ports/bridge/adapters/wormhole-adapter.js +27 -0
  346. package/dist/ports/bridge/adapters/wormhole-adapter.js.map +1 -0
  347. package/dist/ports/bridge/bridge.d.ts +123 -0
  348. package/dist/ports/bridge/bridge.d.ts.map +1 -0
  349. package/dist/ports/bridge/bridge.js +20 -0
  350. package/dist/ports/bridge/bridge.js.map +1 -0
  351. package/dist/ports/bridge/index.d.ts +13 -0
  352. package/dist/ports/bridge/index.d.ts.map +1 -0
  353. package/dist/ports/bridge/index.js +11 -0
  354. package/dist/ports/bridge/index.js.map +1 -0
  355. package/dist/ports/canton/adapters/ledger-api-adapter.d.ts +52 -0
  356. package/dist/ports/canton/adapters/ledger-api-adapter.d.ts.map +1 -0
  357. package/dist/ports/canton/adapters/ledger-api-adapter.js +232 -0
  358. package/dist/ports/canton/adapters/ledger-api-adapter.js.map +1 -0
  359. package/dist/ports/canton/canton-identity.d.ts +60 -0
  360. package/dist/ports/canton/canton-identity.d.ts.map +1 -0
  361. package/dist/ports/canton/canton-identity.js +28 -0
  362. package/dist/ports/canton/canton-identity.js.map +1 -0
  363. package/dist/ports/canton/canton-validator.d.ts +182 -0
  364. package/dist/ports/canton/canton-validator.d.ts.map +1 -0
  365. package/dist/ports/canton/canton-validator.js +39 -0
  366. package/dist/ports/canton/canton-validator.js.map +1 -0
  367. package/dist/ports/canton/fingerprint.d.ts +24 -0
  368. package/dist/ports/canton/fingerprint.d.ts.map +1 -0
  369. package/dist/ports/canton/fingerprint.js +31 -0
  370. package/dist/ports/canton/fingerprint.js.map +1 -0
  371. package/dist/ports/canton/hash.d.ts +37 -0
  372. package/dist/ports/canton/hash.d.ts.map +1 -0
  373. package/dist/ports/canton/hash.js +68 -0
  374. package/dist/ports/canton/hash.js.map +1 -0
  375. package/dist/ports/canton/http.d.ts +64 -0
  376. package/dist/ports/canton/http.d.ts.map +1 -0
  377. package/dist/ports/canton/http.js +177 -0
  378. package/dist/ports/canton/http.js.map +1 -0
  379. package/dist/ports/cross-vm.d.ts +79 -0
  380. package/dist/ports/cross-vm.d.ts.map +1 -0
  381. package/dist/ports/cross-vm.js +81 -0
  382. package/dist/ports/cross-vm.js.map +1 -0
  383. package/dist/ports/index.d.ts +18 -0
  384. package/dist/ports/index.d.ts.map +1 -0
  385. package/dist/ports/index.js +11 -0
  386. package/dist/ports/index.js.map +1 -0
  387. package/dist/ports/tenzro-identity.d.ts +29 -0
  388. package/dist/ports/tenzro-identity.d.ts.map +1 -0
  389. package/dist/ports/tenzro-identity.js +19 -0
  390. package/dist/ports/tenzro-identity.js.map +1 -0
  391. package/dist/ports/tenzro-rpc.d.ts +79 -0
  392. package/dist/ports/tenzro-rpc.d.ts.map +1 -0
  393. package/dist/ports/tenzro-rpc.js +21 -0
  394. package/dist/ports/tenzro-rpc.js.map +1 -0
  395. package/dist/router/index.d.ts +3 -0
  396. package/dist/router/index.d.ts.map +1 -0
  397. package/dist/router/index.js +2 -0
  398. package/dist/router/index.js.map +1 -0
  399. package/dist/router/route.d.ts +17 -0
  400. package/dist/router/route.d.ts.map +1 -0
  401. package/dist/router/route.js +78 -0
  402. package/dist/router/route.js.map +1 -0
  403. package/dist/settlement/nanopayment-flow.d.ts +48 -0
  404. package/dist/settlement/nanopayment-flow.d.ts.map +1 -0
  405. package/dist/settlement/nanopayment-flow.js +111 -0
  406. package/dist/settlement/nanopayment-flow.js.map +1 -0
  407. package/dist/surfaces/canton-external.d.ts +43 -0
  408. package/dist/surfaces/canton-external.d.ts.map +1 -0
  409. package/dist/surfaces/canton-external.js +252 -0
  410. package/dist/surfaces/canton-external.js.map +1 -0
  411. package/dist/surfaces/canton-internal.d.ts +34 -0
  412. package/dist/surfaces/canton-internal.d.ts.map +1 -0
  413. package/dist/surfaces/canton-internal.js +163 -0
  414. package/dist/surfaces/canton-internal.js.map +1 -0
  415. package/dist/surfaces/canton-onboarding.d.ts +64 -0
  416. package/dist/surfaces/canton-onboarding.d.ts.map +1 -0
  417. package/dist/surfaces/canton-onboarding.js +113 -0
  418. package/dist/surfaces/canton-onboarding.js.map +1 -0
  419. package/dist/surfaces/evm-on-tenzro.d.ts +29 -0
  420. package/dist/surfaces/evm-on-tenzro.d.ts.map +1 -0
  421. package/dist/surfaces/evm-on-tenzro.js +226 -0
  422. package/dist/surfaces/evm-on-tenzro.js.map +1 -0
  423. package/dist/surfaces/index.d.ts +13 -0
  424. package/dist/surfaces/index.d.ts.map +1 -0
  425. package/dist/surfaces/index.js +7 -0
  426. package/dist/surfaces/index.js.map +1 -0
  427. package/dist/surfaces/svm-on-tenzro.d.ts +24 -0
  428. package/dist/surfaces/svm-on-tenzro.d.ts.map +1 -0
  429. package/dist/surfaces/svm-on-tenzro.js +238 -0
  430. package/dist/surfaces/svm-on-tenzro.js.map +1 -0
  431. package/dist/surfaces/tenzro-native.d.ts +45 -0
  432. package/dist/surfaces/tenzro-native.d.ts.map +1 -0
  433. package/dist/surfaces/tenzro-native.js +299 -0
  434. package/dist/surfaces/tenzro-native.js.map +1 -0
  435. package/dist/surfaces/util.d.ts +18 -0
  436. package/dist/surfaces/util.d.ts.map +1 -0
  437. package/dist/surfaces/util.js +36 -0
  438. package/dist/surfaces/util.js.map +1 -0
  439. package/dist/types/asset.d.ts +43 -0
  440. package/dist/types/asset.d.ts.map +1 -0
  441. package/dist/types/asset.js +13 -0
  442. package/dist/types/asset.js.map +1 -0
  443. package/dist/types/consent.d.ts +46 -0
  444. package/dist/types/consent.d.ts.map +1 -0
  445. package/dist/types/consent.js +18 -0
  446. package/dist/types/consent.js.map +1 -0
  447. package/dist/types/identity.d.ts +115 -0
  448. package/dist/types/identity.d.ts.map +1 -0
  449. package/dist/types/identity.js +12 -0
  450. package/dist/types/identity.js.map +1 -0
  451. package/dist/types/index.d.ts +10 -0
  452. package/dist/types/index.d.ts.map +1 -0
  453. package/dist/types/index.js +3 -0
  454. package/dist/types/index.js.map +1 -0
  455. package/dist/types/intent.d.ts +132 -0
  456. package/dist/types/intent.d.ts.map +1 -0
  457. package/dist/types/intent.js +8 -0
  458. package/dist/types/intent.js.map +1 -0
  459. package/dist/types/signing-driver.d.ts +48 -0
  460. package/dist/types/signing-driver.d.ts.map +1 -0
  461. package/dist/types/signing-driver.js +9 -0
  462. package/dist/types/signing-driver.js.map +1 -0
  463. package/dist/types/surface-module.d.ts +38 -0
  464. package/dist/types/surface-module.d.ts.map +1 -0
  465. package/dist/types/surface-module.js +19 -0
  466. package/dist/types/surface-module.js.map +1 -0
  467. package/dist/types/surface.d.ts +17 -0
  468. package/dist/types/surface.d.ts.map +1 -0
  469. package/dist/types/surface.js +28 -0
  470. package/dist/types/surface.js.map +1 -0
  471. package/package.json +84 -0
@@ -0,0 +1,94 @@
1
+ /**
2
+ * `walletNew()` — passkey-quorum provisioning flow per DESIGN.md §4.3.2.
3
+ *
4
+ * Replaces M1's deterministic `provisionIdentity()` (which mocks shares
5
+ * locally) with the M5 network-governed ceremony. The kernel orchestrates;
6
+ * Tenzro's `/wallet/new/*` endpoints + the host's WebAuthn glue do the
7
+ * heavy lifting.
8
+ *
9
+ * Steps mapped to DESIGN.md §4.3.2:
10
+ *
11
+ * 1. Host opens an onboarding page; the kernel is invoked from that page.
12
+ * 2. Host runs `navigator.credentials.create` via `PasskeyEnroller`,
13
+ * yielding a fresh passkey credential bound to the Tenzro relying-party.
14
+ * 3. Kernel calls `ProvisioningPort.start({credentialId, attestation, kind})`.
15
+ * The node-TEE runs DKG, returns the new DID + per-surface public keys
16
+ * + the wrapped device share + AEAD metadata.
17
+ * 4. Kernel hands the wrapped share to `ShareStore.put(...)` so the host
18
+ * can persist it under the platform's secure storage (IndexedDB, OS
19
+ * keychain, largeBlob, …). The unwrap key never enters JS memory.
20
+ * 5. Kernel calls `ProvisioningPort.confirm({did, sessionId})` so the
21
+ * node-TEE finalises the topology record (DID Document, threshold,
22
+ * verificationMethods).
23
+ * 6. Kernel returns the resulting `TdipIdentity` and the credential id
24
+ * bound to the device share, so subsequent signing flows can pass
25
+ * it into `PasskeyShareUnwrapper`.
26
+ *
27
+ * Errors abort cleanly: if `confirm` fails, the kernel calls
28
+ * `ProvisioningPort.cancel(sessionId)` so the node drops the half-built
29
+ * record and the wrapped share, and re-throws the original error. The
30
+ * host is responsible for surfacing the failure to the user.
31
+ *
32
+ * Browser-clean: no Node-specific globals.
33
+ */
34
+ export async function walletNew(opts) {
35
+ const kind = opts.kind ?? 'human';
36
+ const start = await opts.provisioning.start({ kind });
37
+ let enrolment;
38
+ try {
39
+ enrolment = await opts.enroller.enroll({
40
+ challenge: start.challenge,
41
+ userId: start.userHandle,
42
+ userDisplayName: start.userDisplayName,
43
+ });
44
+ }
45
+ catch (err) {
46
+ // User cancelled the passkey UI, or the authenticator failed.
47
+ await safeCancel(opts.provisioning, start.sessionId);
48
+ throw err;
49
+ }
50
+ let finalised;
51
+ try {
52
+ finalised = await opts.provisioning.finalize({
53
+ sessionId: start.sessionId,
54
+ enrolment,
55
+ });
56
+ }
57
+ catch (err) {
58
+ await safeCancel(opts.provisioning, start.sessionId);
59
+ throw err;
60
+ }
61
+ if (opts.shareStore) {
62
+ try {
63
+ await opts.shareStore.put({
64
+ did: finalised.identity.did,
65
+ share: finalised.wrappedShare,
66
+ });
67
+ }
68
+ catch (err) {
69
+ await safeCancel(opts.provisioning, start.sessionId);
70
+ throw err;
71
+ }
72
+ }
73
+ try {
74
+ await opts.provisioning.confirm({ sessionId: start.sessionId });
75
+ }
76
+ catch (err) {
77
+ await safeCancel(opts.provisioning, start.sessionId);
78
+ throw err;
79
+ }
80
+ return {
81
+ identity: finalised.identity,
82
+ threshold: finalised.threshold,
83
+ credentialId: finalised.wrappedShare.credentialId,
84
+ };
85
+ }
86
+ async function safeCancel(p, sessionId) {
87
+ try {
88
+ await p.cancel({ sessionId });
89
+ }
90
+ catch {
91
+ // Best-effort; the node's own session-TTL will clean up.
92
+ }
93
+ }
94
+ //# sourceMappingURL=wallet-new.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wallet-new.js","sourceRoot":"","sources":["../../src/identity/wallet-new.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AAwGH,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,IAAsB;IACpD,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,OAAO,CAAC;IAClC,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;IAEtD,IAAI,SAA2B,CAAC;IAChC,IAAI,CAAC;QACH,SAAS,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;YACrC,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,MAAM,EAAE,KAAK,CAAC,UAAU;YACxB,eAAe,EAAE,KAAK,CAAC,eAAe;SACvC,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,8DAA8D;QAC9D,MAAM,UAAU,CAAC,IAAI,CAAC,YAAY,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;QACrD,MAAM,GAAG,CAAC;IACZ,CAAC;IAED,IAAI,SAA4D,CAAC;IACjE,IAAI,CAAC;QACH,SAAS,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC;YAC3C,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,SAAS;SACV,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,UAAU,CAAC,IAAI,CAAC,YAAY,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;QACrD,MAAM,GAAG,CAAC;IACZ,CAAC;IAED,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;QACpB,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;gBACxB,GAAG,EAAE,SAAS,CAAC,QAAQ,CAAC,GAAG;gBAC3B,KAAK,EAAE,SAAS,CAAC,YAAY;aAC9B,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,UAAU,CAAC,IAAI,CAAC,YAAY,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;YACrD,MAAM,GAAG,CAAC;QACZ,CAAC;IACH,CAAC;IAED,IAAI,CAAC;QACH,MAAM,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC;IAClE,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,UAAU,CAAC,IAAI,CAAC,YAAY,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;QACrD,MAAM,GAAG,CAAC;IACZ,CAAC;IAED,OAAO;QACL,QAAQ,EAAE,SAAS,CAAC,QAAQ;QAC5B,SAAS,EAAE,SAAS,CAAC,SAAS;QAC9B,YAAY,EAAE,SAAS,CAAC,YAAY,CAAC,YAAY;KAClD,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,UAAU,CAAC,CAAmB,EAAE,SAAiB;IAC9D,IAAI,CAAC;QACH,MAAM,CAAC,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC;IAChC,CAAC;IAAC,MAAM,CAAC;QACP,yDAAyD;IAC3D,CAAC;AACH,CAAC"}
@@ -0,0 +1,116 @@
1
+ /**
2
+ * `walletRecover()` — passkey-quorum recovery flow per DESIGN.md §4.3.5.
3
+ *
4
+ * Two recovery paths covered by the same orchestrator (the node decides
5
+ * which proof to accept based on what the user pre-registered at
6
+ * provisioning time):
7
+ *
8
+ * - **Device lost, TEE survives** (single-device or `2-of-2` testnet
9
+ * case): user opens `/wallet/recover` on a new device, runs a
10
+ * passkey ceremony, and submits a recovery proof (verified email
11
+ * OTP, social-recovery delegate signatures per
12
+ * `delegate-set.ts`, or pre-registered Tenzro-id KYC re-assertion).
13
+ * The TEE re-randomises the device leg and deals a fresh share to
14
+ * the new device. Same DID, rotated public keys + new credentialId.
15
+ *
16
+ * - **Compromise suspected**: same flow, optionally `forceRotate`
17
+ * forces both shares to re-randomise.
18
+ *
19
+ * The kernel orchestrates; Tenzro's `/wallet/recover/*` endpoints + the
20
+ * host's WebAuthn enroller do the cryptographic work. We mirror
21
+ * `wallet-new.ts` shape on purpose — the only differences are:
22
+ *
23
+ * - `start` takes the existing `did` plus a recovery-proof envelope;
24
+ * - `finalize` may rotate per-surface public keys, so the result
25
+ * yields the *new* `TdipIdentity`;
26
+ * - the new `credentialId` is the freshly-enrolled passkey, not the
27
+ * lost device's.
28
+ *
29
+ * Errors abort cleanly via `cancel(sessionId)`, same as `walletNew`.
30
+ *
31
+ * Browser-clean: no Node-specific globals.
32
+ */
33
+ import type { TdipDid, TdipIdentity } from '../types/identity.js';
34
+ import type { DeviceShareStore, PasskeyEnroller, PasskeyEnrolment, WalletThresholdRecord, WrappedDeviceShare } from './wallet-new.js';
35
+ /**
36
+ * Recovery proof envelope. The kernel does not interpret these; the
37
+ * node verifies them against what the user pre-registered at
38
+ * provisioning. The discriminator is forwarded verbatim.
39
+ *
40
+ * Three kinds the M5 design covers:
41
+ * - `email-otp` — node-issued OTP delivered out-of-band.
42
+ * - `social` — k of n delegate signatures over a recovery message.
43
+ * - `tenzro-id-kyc` — fresh KYC re-assertion (vendor proof of liveness).
44
+ */
45
+ export type RecoveryProof = {
46
+ readonly kind: 'email-otp';
47
+ readonly otp: string;
48
+ } | {
49
+ readonly kind: 'social';
50
+ /** Pre-validated against `delegate-set.ts` shape upstream. */
51
+ readonly delegateSignatures: ReadonlyArray<{
52
+ readonly delegateDid: TdipDid;
53
+ readonly signature: Uint8Array;
54
+ }>;
55
+ } | {
56
+ readonly kind: 'tenzro-id-kyc';
57
+ /** Vendor-specific proof token (Persona, Sumsub, etc). */
58
+ readonly proofToken: string;
59
+ };
60
+ export interface RecoveryStartReply {
61
+ readonly sessionId: string;
62
+ readonly challenge: Uint8Array;
63
+ readonly userHandle: Uint8Array;
64
+ readonly userDisplayName: string;
65
+ }
66
+ /**
67
+ * Server transport for `/wallet/recover/*`. Tenzro implements; kernel
68
+ * consumes.
69
+ *
70
+ * POST /wallet/recover/start → { session_id, challenge_b64,
71
+ * user_handle_b64, user_display_name }
72
+ * POST /wallet/recover/finalize → { identity, threshold, wrapped_share }
73
+ * POST /wallet/recover/confirm → 204
74
+ * POST /wallet/recover/cancel → 204 (idempotent)
75
+ */
76
+ export interface RecoveryPort {
77
+ start(req: {
78
+ readonly did: TdipDid;
79
+ readonly proof: RecoveryProof;
80
+ /**
81
+ * Optional: also rotate the TEE-side share. Default `false` —
82
+ * device-lost-TEE-survives only re-randomises the device leg.
83
+ * `true` is for compromise-suspected: both legs rotate.
84
+ */
85
+ readonly forceRotate?: boolean;
86
+ }): Promise<RecoveryStartReply>;
87
+ finalize(req: {
88
+ readonly sessionId: string;
89
+ readonly enrolment: PasskeyEnrolment;
90
+ }): Promise<{
91
+ readonly identity: TdipIdentity;
92
+ readonly threshold: WalletThresholdRecord;
93
+ readonly wrappedShare: WrappedDeviceShare;
94
+ }>;
95
+ confirm(req: {
96
+ readonly sessionId: string;
97
+ }): Promise<void>;
98
+ cancel(req: {
99
+ readonly sessionId: string;
100
+ }): Promise<void>;
101
+ }
102
+ export interface WalletRecoverOptions {
103
+ readonly did: TdipDid;
104
+ readonly proof: RecoveryProof;
105
+ readonly forceRotate?: boolean;
106
+ readonly enroller: PasskeyEnroller;
107
+ readonly recovery: RecoveryPort;
108
+ readonly shareStore?: DeviceShareStore;
109
+ }
110
+ export interface WalletRecoverResult {
111
+ readonly identity: TdipIdentity;
112
+ readonly threshold: WalletThresholdRecord;
113
+ readonly credentialId: string;
114
+ }
115
+ export declare function walletRecover(opts: WalletRecoverOptions): Promise<WalletRecoverResult>;
116
+ //# sourceMappingURL=wallet-recover.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wallet-recover.d.ts","sourceRoot":"","sources":["../../src/identity/wallet-recover.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAClE,OAAO,KAAK,EACV,gBAAgB,EAChB,eAAe,EACf,gBAAgB,EAChB,qBAAqB,EACrB,kBAAkB,EACnB,MAAM,iBAAiB,CAAC;AAEzB;;;;;;;;;GASG;AACH,MAAM,MAAM,aAAa,GACrB;IACE,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAC3B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;CACtB,GACD;IACE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACxB,8DAA8D;IAC9D,QAAQ,CAAC,kBAAkB,EAAE,aAAa,CAAC;QACzC,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;QAC9B,QAAQ,CAAC,SAAS,EAAE,UAAU,CAAC;KAChC,CAAC,CAAC;CACJ,GACD;IACE,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAC;IAC/B,0DAA0D;IAC1D,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B,CAAC;AAEN,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,SAAS,EAAE,UAAU,CAAC;IAC/B,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;IAChC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;CAClC;AAED;;;;;;;;;GASG;AACH,MAAM,WAAW,YAAY;IAC3B,KAAK,CAAC,GAAG,EAAE;QACT,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC;QACtB,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC;QAC9B;;;;WAIG;QACH,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC;KAChC,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAEhC,QAAQ,CAAC,GAAG,EAAE;QACZ,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;QAC3B,QAAQ,CAAC,SAAS,EAAE,gBAAgB,CAAC;KACtC,GAAG,OAAO,CAAC;QACV,QAAQ,CAAC,QAAQ,EAAE,YAAY,CAAC;QAChC,QAAQ,CAAC,SAAS,EAAE,qBAAqB,CAAC;QAC1C,QAAQ,CAAC,YAAY,EAAE,kBAAkB,CAAC;KAC3C,CAAC,CAAC;IAEH,OAAO,CAAC,GAAG,EAAE;QAAE,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5D,MAAM,CAAC,GAAG,EAAE;QAAE,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC5D;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC;IAC9B,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC;IAC/B,QAAQ,CAAC,QAAQ,EAAE,eAAe,CAAC;IACnC,QAAQ,CAAC,QAAQ,EAAE,YAAY,CAAC;IAChC,QAAQ,CAAC,UAAU,CAAC,EAAE,gBAAgB,CAAC;CACxC;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,QAAQ,EAAE,YAAY,CAAC;IAChC,QAAQ,CAAC,SAAS,EAAE,qBAAqB,CAAC;IAC1C,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;CAC/B;AAED,wBAAsB,aAAa,CAAC,IAAI,EAAE,oBAAoB,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAsD5F"}
@@ -0,0 +1,95 @@
1
+ /**
2
+ * `walletRecover()` — passkey-quorum recovery flow per DESIGN.md §4.3.5.
3
+ *
4
+ * Two recovery paths covered by the same orchestrator (the node decides
5
+ * which proof to accept based on what the user pre-registered at
6
+ * provisioning time):
7
+ *
8
+ * - **Device lost, TEE survives** (single-device or `2-of-2` testnet
9
+ * case): user opens `/wallet/recover` on a new device, runs a
10
+ * passkey ceremony, and submits a recovery proof (verified email
11
+ * OTP, social-recovery delegate signatures per
12
+ * `delegate-set.ts`, or pre-registered Tenzro-id KYC re-assertion).
13
+ * The TEE re-randomises the device leg and deals a fresh share to
14
+ * the new device. Same DID, rotated public keys + new credentialId.
15
+ *
16
+ * - **Compromise suspected**: same flow, optionally `forceRotate`
17
+ * forces both shares to re-randomise.
18
+ *
19
+ * The kernel orchestrates; Tenzro's `/wallet/recover/*` endpoints + the
20
+ * host's WebAuthn enroller do the cryptographic work. We mirror
21
+ * `wallet-new.ts` shape on purpose — the only differences are:
22
+ *
23
+ * - `start` takes the existing `did` plus a recovery-proof envelope;
24
+ * - `finalize` may rotate per-surface public keys, so the result
25
+ * yields the *new* `TdipIdentity`;
26
+ * - the new `credentialId` is the freshly-enrolled passkey, not the
27
+ * lost device's.
28
+ *
29
+ * Errors abort cleanly via `cancel(sessionId)`, same as `walletNew`.
30
+ *
31
+ * Browser-clean: no Node-specific globals.
32
+ */
33
+ export async function walletRecover(opts) {
34
+ const start = await opts.recovery.start({
35
+ did: opts.did,
36
+ proof: opts.proof,
37
+ ...(opts.forceRotate !== undefined ? { forceRotate: opts.forceRotate } : {}),
38
+ });
39
+ let enrolment;
40
+ try {
41
+ enrolment = await opts.enroller.enroll({
42
+ challenge: start.challenge,
43
+ userId: start.userHandle,
44
+ userDisplayName: start.userDisplayName,
45
+ });
46
+ }
47
+ catch (err) {
48
+ await safeCancel(opts.recovery, start.sessionId);
49
+ throw err;
50
+ }
51
+ let finalised;
52
+ try {
53
+ finalised = await opts.recovery.finalize({
54
+ sessionId: start.sessionId,
55
+ enrolment,
56
+ });
57
+ }
58
+ catch (err) {
59
+ await safeCancel(opts.recovery, start.sessionId);
60
+ throw err;
61
+ }
62
+ if (opts.shareStore) {
63
+ try {
64
+ await opts.shareStore.put({
65
+ did: finalised.identity.did,
66
+ share: finalised.wrappedShare,
67
+ });
68
+ }
69
+ catch (err) {
70
+ await safeCancel(opts.recovery, start.sessionId);
71
+ throw err;
72
+ }
73
+ }
74
+ try {
75
+ await opts.recovery.confirm({ sessionId: start.sessionId });
76
+ }
77
+ catch (err) {
78
+ await safeCancel(opts.recovery, start.sessionId);
79
+ throw err;
80
+ }
81
+ return {
82
+ identity: finalised.identity,
83
+ threshold: finalised.threshold,
84
+ credentialId: finalised.wrappedShare.credentialId,
85
+ };
86
+ }
87
+ async function safeCancel(p, sessionId) {
88
+ try {
89
+ await p.cancel({ sessionId });
90
+ }
91
+ catch {
92
+ // Best-effort; node's session-TTL cleans up.
93
+ }
94
+ }
95
+ //# sourceMappingURL=wallet-recover.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wallet-recover.js","sourceRoot":"","sources":["../../src/identity/wallet-recover.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAiGH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,IAA0B;IAC5D,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;QACtC,GAAG,EAAE,IAAI,CAAC,GAAG;QACb,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,GAAG,CAAC,IAAI,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC7E,CAAC,CAAC;IAEH,IAAI,SAA2B,CAAC;IAChC,IAAI,CAAC;QACH,SAAS,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;YACrC,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,MAAM,EAAE,KAAK,CAAC,UAAU;YACxB,eAAe,EAAE,KAAK,CAAC,eAAe;SACvC,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,UAAU,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;QACjD,MAAM,GAAG,CAAC;IACZ,CAAC;IAED,IAAI,SAAwD,CAAC;IAC7D,IAAI,CAAC;QACH,SAAS,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;YACvC,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,SAAS;SACV,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,UAAU,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;QACjD,MAAM,GAAG,CAAC;IACZ,CAAC;IAED,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;QACpB,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;gBACxB,GAAG,EAAE,SAAS,CAAC,QAAQ,CAAC,GAAG;gBAC3B,KAAK,EAAE,SAAS,CAAC,YAAY;aAC9B,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,UAAU,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;YACjD,MAAM,GAAG,CAAC;QACZ,CAAC;IACH,CAAC;IAED,IAAI,CAAC;QACH,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC;IAC9D,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,UAAU,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;QACjD,MAAM,GAAG,CAAC;IACZ,CAAC;IAED,OAAO;QACL,QAAQ,EAAE,SAAS,CAAC,QAAQ;QAC5B,SAAS,EAAE,SAAS,CAAC,SAAS;QAC9B,YAAY,EAAE,SAAS,CAAC,YAAY,CAAC,YAAY;KAClD,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,UAAU,CAAC,CAAe,EAAE,SAAiB;IAC1D,IAAI,CAAC;QACH,MAAM,CAAC,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC;IAChC,CAAC;IAAC,MAAM,CAAC;QACP,6CAA6C;IAC/C,CAAC;AACH,CAAC"}
@@ -0,0 +1,12 @@
1
+ export { WalletKernel } from './kernel.js';
2
+ export type { WalletKernelOptions, AgentPortsBundle } from './kernel.js';
3
+ export * from './types/index.js';
4
+ export * from './identity/index.js';
5
+ export * from './custody/index.js';
6
+ export * from './consent/index.js';
7
+ export * from './balance/index.js';
8
+ export * from './router/index.js';
9
+ export * from './surfaces/index.js';
10
+ export * from './ports/index.js';
11
+ export * from './dapp/index.js';
12
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,YAAY,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAEzE,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,11 @@
1
+ export { WalletKernel } from "./kernel.js";
2
+ export * from "./types/index.js";
3
+ export * from "./identity/index.js";
4
+ export * from "./custody/index.js";
5
+ export * from "./consent/index.js";
6
+ export * from "./balance/index.js";
7
+ export * from "./router/index.js";
8
+ export * from "./surfaces/index.js";
9
+ export * from "./ports/index.js";
10
+ export * from "./dapp/index.js";
11
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAG3C,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC"}
@@ -0,0 +1,119 @@
1
+ /**
2
+ * WalletKernel — the facade. Wires identity, custody, surfaces, router, and
3
+ * consent. UI/SDK consumers only ever touch this class.
4
+ */
5
+ import { type BalanceProvider } from './balance/index.js';
6
+ import type { AcpPort, AgentPaymentPort, Ap2Port, AuthApprovalPort, Erc7802Port, Erc8004Port, EscrowPort, HtlcEscrowPort, NanopaymentPort, PaymentRailsPort, SessionKeyPort, TeeAttestationPort } from './ports/agent/index.js';
7
+ import type { BridgeAdapterId, BridgeRoutePort } from './ports/bridge/index.js';
8
+ import type { UnifiedBalance } from './types/asset.js';
9
+ import type { Consent, SpendingPolicy } from './types/consent.js';
10
+ import type { SurfaceKey, TdipDid, TdipIdentity } from './types/identity.js';
11
+ import { type Intent, type MemoSpec, type PreparedTx, type SignedTx, type TxHandle, type TxStatus } from './types/intent.js';
12
+ import type { SurfaceModule } from './types/surface-module.js';
13
+ import type { SurfaceName } from './types/surface.js';
14
+ /**
15
+ * Optional bundle of agent-payment ports. None of these are surfaces in the
16
+ * lifecycle sense (no prepare→sign→submit→watch); they're verification +
17
+ * policy + session-management facades over Tenzro's RPC layer. ERC-8004
18
+ * specifically returns calldata that surfaces (typically `evm-on-tenzro`)
19
+ * sign and broadcast.
20
+ *
21
+ * Each field is independently optional so kernels can be assembled with
22
+ * just AP2 (for verification gating), just ERC-8004 (for agent-identity
23
+ * setup flows), etc.
24
+ */
25
+ export interface AgentPortsBundle {
26
+ readonly ap2?: Ap2Port;
27
+ readonly erc8004?: Erc8004Port;
28
+ readonly agentPayment?: AgentPaymentPort;
29
+ readonly nanopayment?: NanopaymentPort;
30
+ /** Human-in-the-loop pending-approvals queue (auth engine). */
31
+ readonly authApproval?: AuthApprovalPort;
32
+ /** TEE attestation verification for the node's hybrid-signing co-signer. */
33
+ readonly teeAttestation?: TeeAttestationPort;
34
+ /** Scoped delegations (substrate for AP2 / Mastercard / x402 caps). */
35
+ readonly sessionKey?: SessionKeyPort;
36
+ /** Native escrow primitive (CreateEscrow/Release/Refund). */
37
+ readonly escrow?: EscrowPort;
38
+ /** Payment rails (MPP / x402 / AP2 / Visa TAP / Mastercard) settlement. */
39
+ readonly paymentRails?: PaymentRailsPort;
40
+ /** OpenAI ACP (Agentic Commerce Protocol) buyer-side. SDK adapter pending. */
41
+ readonly acp?: AcpPort;
42
+ /** HTLC cross-chain escrow (v2 — DESIGN.md §11.7). SDK adapter pending. */
43
+ readonly htlcEscrow?: HtlcEscrowPort;
44
+ /** ERC-7802 SuperchainERC20 cross-chain mint/burn calldata encoder. */
45
+ readonly erc7802?: Erc7802Port;
46
+ }
47
+ export interface WalletKernelOptions {
48
+ readonly identity: TdipIdentity;
49
+ readonly surfaces: ReadonlyMap<SurfaceName, SurfaceModule>;
50
+ readonly balanceProviders?: readonly BalanceProvider[];
51
+ /** Identity-level delegation scope, set by the user. */
52
+ readonly delegationScope?: SpendingPolicy;
53
+ /** Per-session policy, set when a session is opened. */
54
+ readonly sessionPolicy?: SpendingPolicy;
55
+ /** Optional agent-payment ports (AP2, ERC-8004, agent-payment, nano).
56
+ * When omitted, `kernel.agent.<port>` accessors throw. */
57
+ readonly agentPorts?: AgentPortsBundle;
58
+ /** Optional bridge router adapters (LI.FI / CCIP / LayerZero), keyed by
59
+ * `adapterId`. Consumers query each for a quote and pick the winner;
60
+ * the kernel never picks for them. Empty by default; M8 work. */
61
+ readonly bridgeAdapters?: ReadonlyArray<BridgeRoutePort>;
62
+ }
63
+ export declare class WalletKernel {
64
+ #private;
65
+ readonly identity: TdipIdentity;
66
+ constructor(opts: WalletKernelOptions);
67
+ /**
68
+ * Bridge router accessors. Consumers fan out across all registered
69
+ * adapters for `quote()` (cheapest/fastest pick is theirs to make),
70
+ * then call `build()`/`track()` on the chosen adapter.
71
+ */
72
+ readonly bridge: {
73
+ /** All registered adapters, in registration order. */
74
+ readonly adapters: () => readonly BridgeRoutePort[];
75
+ /** Look up a single adapter by `adapterId`. */
76
+ readonly get: (id: BridgeAdapterId) => BridgeRoutePort | undefined;
77
+ };
78
+ /**
79
+ * Agent-payment ports — AP2 (mandate verification + session lifecycle),
80
+ * ERC-8004 (agent registry calldata), agent-payment (spending policy +
81
+ * payForService), nanopayment (per-token streaming channels). Each
82
+ * accessor throws if the port wasn't configured at construction time.
83
+ */
84
+ readonly agent: {
85
+ readonly ap2: () => Ap2Port;
86
+ readonly erc8004: () => Erc8004Port;
87
+ readonly agentPayment: () => AgentPaymentPort;
88
+ readonly nanopayment: () => NanopaymentPort;
89
+ readonly authApproval: () => AuthApprovalPort;
90
+ readonly teeAttestation: () => TeeAttestationPort;
91
+ readonly sessionKey: () => SessionKeyPort;
92
+ readonly escrow: () => EscrowPort;
93
+ readonly paymentRails: () => PaymentRailsPort;
94
+ readonly acp: () => AcpPort;
95
+ readonly htlcEscrow: () => HtlcEscrowPort;
96
+ readonly erc7802: () => Erc7802Port;
97
+ };
98
+ /** Resolve a surface key for a DID — the `keyResolver` surface modules call. */
99
+ resolveKey(did: TdipDid, surface: SurfaceName): SurfaceKey | undefined;
100
+ /** Aggregate balances across all registered providers. */
101
+ balances(): Promise<readonly UnifiedBalance[]>;
102
+ /**
103
+ * What memo / destination-tag shape does this intent need? Used by UIs to
104
+ * render the right input field with the right validation. Surfaces that
105
+ * never accept memos return `MEMO_SPEC_NONE`; surfaces that conditionally
106
+ * require them (e.g. Canton transfers to certain exchange parties) return
107
+ * a per-intent spec.
108
+ */
109
+ memoSpec(intent: Intent): MemoSpec;
110
+ /** First step: produce a Preview the user can confirm. */
111
+ prepare(intent: Intent): Promise<PreparedTx>;
112
+ /** Second step: enforce policy, then sign. */
113
+ sign(prepared: PreparedTx, consent: Consent): Promise<SignedTx>;
114
+ /** Third step: submit. */
115
+ submit(signed: SignedTx): Promise<TxHandle>;
116
+ /** Fourth step: watch finality. */
117
+ watch(handle: TxHandle): AsyncIterable<TxStatus>;
118
+ }
119
+ //# sourceMappingURL=kernel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kernel.d.ts","sourceRoot":"","sources":["../src/kernel.ts"],"names":[],"mappings":"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"}
package/dist/kernel.js ADDED
@@ -0,0 +1,144 @@
1
+ /**
2
+ * WalletKernel — the facade. Wires identity, custody, surfaces, router, and
3
+ * consent. UI/SDK consumers only ever touch this class.
4
+ */
5
+ import { aggregateBalances } from "./balance/index.js";
6
+ import { enforcePolicy } from "./consent/index.js";
7
+ import { selectRoute } from "./router/index.js";
8
+ import { MEMO_SPEC_NONE, } from "./types/intent.js";
9
+ export class WalletKernel {
10
+ identity;
11
+ #surfaces;
12
+ #balanceProviders;
13
+ #delegationScope;
14
+ #sessionPolicy;
15
+ #agentPorts;
16
+ #bridgeAdapters;
17
+ #spentToday = 0n;
18
+ constructor(opts) {
19
+ this.identity = opts.identity;
20
+ this.#surfaces = opts.surfaces;
21
+ this.#balanceProviders = opts.balanceProviders ?? [];
22
+ this.#delegationScope = opts.delegationScope;
23
+ this.#sessionPolicy = opts.sessionPolicy;
24
+ this.#agentPorts = opts.agentPorts ?? {};
25
+ this.#bridgeAdapters = new Map((opts.bridgeAdapters ?? []).map((a) => [a.adapterId, a]));
26
+ }
27
+ /**
28
+ * Bridge router accessors. Consumers fan out across all registered
29
+ * adapters for `quote()` (cheapest/fastest pick is theirs to make),
30
+ * then call `build()`/`track()` on the chosen adapter.
31
+ */
32
+ bridge = {
33
+ /** All registered adapters, in registration order. */
34
+ adapters: () => Array.from(this.#bridgeAdapters.values()),
35
+ /** Look up a single adapter by `adapterId`. */
36
+ get: (id) => this.#bridgeAdapters.get(id),
37
+ };
38
+ /**
39
+ * Agent-payment ports — AP2 (mandate verification + session lifecycle),
40
+ * ERC-8004 (agent registry calldata), agent-payment (spending policy +
41
+ * payForService), nanopayment (per-token streaming channels). Each
42
+ * accessor throws if the port wasn't configured at construction time.
43
+ */
44
+ agent = {
45
+ ap2: () => this.#requireAgent('ap2'),
46
+ erc8004: () => this.#requireAgent('erc8004'),
47
+ agentPayment: () => this.#requireAgent('agentPayment'),
48
+ nanopayment: () => this.#requireAgent('nanopayment'),
49
+ authApproval: () => this.#requireAgent('authApproval'),
50
+ teeAttestation: () => this.#requireAgent('teeAttestation'),
51
+ sessionKey: () => this.#requireAgent('sessionKey'),
52
+ escrow: () => this.#requireAgent('escrow'),
53
+ paymentRails: () => this.#requireAgent('paymentRails'),
54
+ acp: () => this.#requireAgent('acp'),
55
+ htlcEscrow: () => this.#requireAgent('htlcEscrow'),
56
+ erc7802: () => this.#requireAgent('erc7802'),
57
+ };
58
+ #requireAgent(key) {
59
+ const port = this.#agentPorts[key];
60
+ if (!port) {
61
+ throw new Error(`agent port "${key}" not configured — pass it via WalletKernelOptions.agentPorts`);
62
+ }
63
+ return port;
64
+ }
65
+ /** Resolve a surface key for a DID — the `keyResolver` surface modules call. */
66
+ resolveKey(did, surface) {
67
+ if (did !== this.identity.did)
68
+ return undefined;
69
+ return this.identity.keys.get(surface);
70
+ }
71
+ /** Aggregate balances across all registered providers. */
72
+ async balances() {
73
+ return aggregateBalances(this.#balanceProviders);
74
+ }
75
+ /**
76
+ * What memo / destination-tag shape does this intent need? Used by UIs to
77
+ * render the right input field with the right validation. Surfaces that
78
+ * never accept memos return `MEMO_SPEC_NONE`; surfaces that conditionally
79
+ * require them (e.g. Canton transfers to certain exchange parties) return
80
+ * a per-intent spec.
81
+ */
82
+ memoSpec(intent) {
83
+ const sel = selectRoute(intent);
84
+ const surface = this.#surfaceFor(sel.fromSurface);
85
+ return surface.memoSpec?.(intent) ?? MEMO_SPEC_NONE;
86
+ }
87
+ /** First step: produce a Preview the user can confirm. */
88
+ async prepare(intent) {
89
+ const sel = selectRoute(intent);
90
+ const surface = this.#surfaceFor(sel.fromSurface);
91
+ if (sel.route.kind === 'cross-vm-pointer') {
92
+ if (!surface.preparePointer) {
93
+ throw new Error(`surface ${surface.name} cannot source cross-VM pointer ops`);
94
+ }
95
+ if (intent.kind !== 'send') {
96
+ throw new Error(`pointer ops only support send intents`);
97
+ }
98
+ return surface.preparePointer(intent, {
99
+ fromSurface: sel.route.fromSurface,
100
+ toSurface: sel.route.toSurface,
101
+ owner: intent.from,
102
+ amount: intent.amount,
103
+ });
104
+ }
105
+ return surface.prepare(intent);
106
+ }
107
+ /** Second step: enforce policy, then sign. */
108
+ async sign(prepared, consent) {
109
+ const ctx = {
110
+ ...(this.#delegationScope ? { delegationScope: this.#delegationScope } : {}),
111
+ ...(this.#sessionPolicy ? { sessionPolicy: this.#sessionPolicy } : {}),
112
+ spentSoFarToday: this.#spentToday,
113
+ };
114
+ enforcePolicy(prepared.intent, consent, ctx);
115
+ const surface = this.#surfaceFor(prepared.route.kind === 'native'
116
+ ? prepared.route.surface
117
+ : prepared.route.fromSurface);
118
+ const signed = await surface.sign(prepared, consent);
119
+ if (prepared.intent.kind === 'send') {
120
+ this.#spentToday += prepared.intent.amount;
121
+ }
122
+ return signed;
123
+ }
124
+ /** Third step: submit. */
125
+ async submit(signed) {
126
+ const surfaceName = signed.prepared.route.kind === 'native'
127
+ ? signed.prepared.route.surface
128
+ : signed.prepared.route.fromSurface;
129
+ const surface = this.#surfaceFor(surfaceName);
130
+ return surface.submit(signed);
131
+ }
132
+ /** Fourth step: watch finality. */
133
+ watch(handle) {
134
+ return this.#surfaceFor(handle.surface).watch(handle);
135
+ }
136
+ // --- internals ---
137
+ #surfaceFor(name) {
138
+ const s = this.#surfaces.get(name);
139
+ if (!s)
140
+ throw new Error(`no surface registered for: ${name}`);
141
+ return s;
142
+ }
143
+ }
144
+ //# sourceMappingURL=kernel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kernel.js","sourceRoot":"","sources":["../src/kernel.ts"],"names":[],"mappings":"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"}