@ixo/openhands-sdk 0.2.0 → 0.4.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 (503) hide show
  1. package/dist/cjs/campaign/campaign.js +3 -2
  2. package/dist/cjs/campaign/campaign.js.map +1 -1
  3. package/dist/cjs/campaign/funding.d.ts.map +1 -1
  4. package/dist/cjs/campaign/funding.js +3 -0
  5. package/dist/cjs/campaign/funding.js.map +1 -1
  6. package/dist/cjs/campaign/pool.d.ts.map +1 -1
  7. package/dist/cjs/campaign/pool.js +2 -1
  8. package/dist/cjs/campaign/pool.js.map +1 -1
  9. package/dist/cjs/campaign/spots.d.ts.map +1 -1
  10. package/dist/cjs/campaign/spots.js +8 -6
  11. package/dist/cjs/campaign/spots.js.map +1 -1
  12. package/dist/cjs/chain/ask.d.ts +104 -14
  13. package/dist/cjs/chain/ask.d.ts.map +1 -1
  14. package/dist/cjs/chain/ask.js +151 -78
  15. package/dist/cjs/chain/ask.js.map +1 -1
  16. package/dist/cjs/chain/askImage.d.ts +19 -0
  17. package/dist/cjs/chain/askImage.d.ts.map +1 -0
  18. package/dist/cjs/chain/askImage.js +56 -0
  19. package/dist/cjs/chain/askImage.js.map +1 -0
  20. package/dist/cjs/chain/bridge.d.ts +7 -33
  21. package/dist/cjs/chain/bridge.d.ts.map +1 -1
  22. package/dist/cjs/chain/bridge.js +10 -25
  23. package/dist/cjs/chain/bridge.js.map +1 -1
  24. package/dist/cjs/chain/claimSubmit.d.ts +15 -0
  25. package/dist/cjs/chain/claimSubmit.d.ts.map +1 -0
  26. package/dist/cjs/chain/claimSubmit.js +14 -0
  27. package/dist/cjs/chain/claimSubmit.js.map +1 -0
  28. package/dist/cjs/chain/delegate.d.ts +52 -7
  29. package/dist/cjs/chain/delegate.d.ts.map +1 -1
  30. package/dist/cjs/chain/delegate.js +66 -14
  31. package/dist/cjs/chain/delegate.js.map +1 -1
  32. package/dist/cjs/chain/domainIndexer.d.ts +26 -0
  33. package/dist/cjs/chain/domainIndexer.d.ts.map +1 -0
  34. package/dist/cjs/chain/domainIndexer.js +51 -0
  35. package/dist/cjs/chain/domainIndexer.js.map +1 -0
  36. package/dist/cjs/chain/entityShape.d.ts +233 -0
  37. package/dist/cjs/chain/entityShape.d.ts.map +1 -0
  38. package/dist/cjs/chain/entityShape.js +251 -0
  39. package/dist/cjs/chain/entityShape.js.map +1 -0
  40. package/dist/cjs/chain/env.d.ts +103 -6
  41. package/dist/cjs/chain/env.d.ts.map +1 -1
  42. package/dist/cjs/chain/env.js +188 -14
  43. package/dist/cjs/chain/env.js.map +1 -1
  44. package/dist/cjs/chain/guest.d.ts +14 -0
  45. package/dist/cjs/chain/guest.d.ts.map +1 -1
  46. package/dist/cjs/chain/guest.js +9 -9
  47. package/dist/cjs/chain/guest.js.map +1 -1
  48. package/dist/cjs/chain/money.d.ts +47 -2
  49. package/dist/cjs/chain/money.d.ts.map +1 -1
  50. package/dist/cjs/chain/money.js +63 -6
  51. package/dist/cjs/chain/money.js.map +1 -1
  52. package/dist/cjs/chain/orgReviewBilling.d.ts +124 -0
  53. package/dist/cjs/chain/orgReviewBilling.d.ts.map +1 -0
  54. package/dist/cjs/chain/orgReviewBilling.js +290 -0
  55. package/dist/cjs/chain/orgReviewBilling.js.map +1 -0
  56. package/dist/cjs/chain/orgReviewBillingSign.d.ts +63 -0
  57. package/dist/cjs/chain/orgReviewBillingSign.d.ts.map +1 -0
  58. package/dist/cjs/chain/orgReviewBillingSign.js +166 -0
  59. package/dist/cjs/chain/orgReviewBillingSign.js.map +1 -0
  60. package/dist/cjs/chain/payoutSettings.d.ts +97 -0
  61. package/dist/cjs/chain/payoutSettings.d.ts.map +1 -0
  62. package/dist/cjs/chain/payoutSettings.js +123 -0
  63. package/dist/cjs/chain/payoutSettings.js.map +1 -0
  64. package/dist/cjs/chain/payoutTerms.d.ts +72 -0
  65. package/dist/cjs/chain/payoutTerms.d.ts.map +1 -0
  66. package/dist/cjs/chain/payoutTerms.js +141 -0
  67. package/dist/cjs/chain/payoutTerms.js.map +1 -0
  68. package/dist/cjs/chain/query.d.ts +14 -0
  69. package/dist/cjs/chain/query.d.ts.map +1 -1
  70. package/dist/cjs/chain/query.js +27 -0
  71. package/dist/cjs/chain/query.js.map +1 -1
  72. package/dist/cjs/chain/reviewBilling.d.ts +86 -0
  73. package/dist/cjs/chain/reviewBilling.d.ts.map +1 -0
  74. package/dist/cjs/chain/reviewBilling.js +265 -0
  75. package/dist/cjs/chain/reviewBilling.js.map +1 -0
  76. package/dist/cjs/chain/store.d.ts +7 -6
  77. package/dist/cjs/chain/store.d.ts.map +1 -1
  78. package/dist/cjs/chain/store.js +7 -6
  79. package/dist/cjs/chain/store.js.map +1 -1
  80. package/dist/cjs/chain/subscription.d.ts +0 -7
  81. package/dist/cjs/chain/subscription.d.ts.map +1 -1
  82. package/dist/cjs/chain/subscription.js +4 -47
  83. package/dist/cjs/chain/subscription.js.map +1 -1
  84. package/dist/cjs/chain/takeBack.d.ts +12 -0
  85. package/dist/cjs/chain/takeBack.d.ts.map +1 -1
  86. package/dist/cjs/chain/takeBack.js +24 -10
  87. package/dist/cjs/chain/takeBack.js.map +1 -1
  88. package/dist/cjs/chain/why.d.ts +44 -0
  89. package/dist/cjs/chain/why.d.ts.map +1 -0
  90. package/dist/cjs/chain/why.js +153 -0
  91. package/dist/cjs/chain/why.js.map +1 -0
  92. package/dist/cjs/chain/whyMint.d.ts +8 -0
  93. package/dist/cjs/chain/whyMint.d.ts.map +1 -0
  94. package/dist/cjs/chain/whyMint.js +53 -0
  95. package/dist/cjs/chain/whyMint.js.map +1 -0
  96. package/dist/cjs/chain.d.ts +8 -4
  97. package/dist/cjs/chain.d.ts.map +1 -1
  98. package/dist/cjs/chain.js +19 -9
  99. package/dist/cjs/chain.js.map +1 -1
  100. package/dist/cjs/config.d.ts +37 -5
  101. package/dist/cjs/config.d.ts.map +1 -1
  102. package/dist/cjs/config.js +9 -2
  103. package/dist/cjs/config.js.map +1 -1
  104. package/dist/cjs/data/agent.d.ts.map +1 -1
  105. package/dist/cjs/data/agent.js +5 -4
  106. package/dist/cjs/data/agent.js.map +1 -1
  107. package/dist/cjs/data/askEntity.d.ts +40 -0
  108. package/dist/cjs/data/askEntity.d.ts.map +1 -0
  109. package/dist/cjs/data/askEntity.js +48 -0
  110. package/dist/cjs/data/askEntity.js.map +1 -0
  111. package/dist/cjs/data/askLinks.d.ts +6 -0
  112. package/dist/cjs/data/askLinks.d.ts.map +1 -0
  113. package/dist/cjs/data/askLinks.js +21 -0
  114. package/dist/cjs/data/askLinks.js.map +1 -0
  115. package/dist/cjs/data/board/assemble.d.ts.map +1 -1
  116. package/dist/cjs/data/board/assemble.js +15 -2
  117. package/dist/cjs/data/board/assemble.js.map +1 -1
  118. package/dist/cjs/data/board/facts.d.ts +11 -0
  119. package/dist/cjs/data/board/facts.d.ts.map +1 -1
  120. package/dist/cjs/data/board/facts.js +16 -0
  121. package/dist/cjs/data/board/facts.js.map +1 -1
  122. package/dist/cjs/data/board/read.d.ts.map +1 -1
  123. package/dist/cjs/data/board/read.js +2 -1
  124. package/dist/cjs/data/board/read.js.map +1 -1
  125. package/dist/cjs/data/board/types.d.ts +9 -0
  126. package/dist/cjs/data/board/types.d.ts.map +1 -1
  127. package/dist/cjs/data/board/types.js.map +1 -1
  128. package/dist/cjs/data/docs.d.ts +10 -2
  129. package/dist/cjs/data/docs.d.ts.map +1 -1
  130. package/dist/cjs/data/docs.js +43 -3
  131. package/dist/cjs/data/docs.js.map +1 -1
  132. package/dist/cjs/data/format.js +1 -1
  133. package/dist/cjs/data/format.js.map +1 -1
  134. package/dist/cjs/data/install.d.ts +8 -0
  135. package/dist/cjs/data/install.d.ts.map +1 -1
  136. package/dist/cjs/data/install.js +9 -1
  137. package/dist/cjs/data/install.js.map +1 -1
  138. package/dist/cjs/data/oracleInfo.d.ts +6 -1
  139. package/dist/cjs/data/oracleInfo.d.ts.map +1 -1
  140. package/dist/cjs/data/oracleInfo.js +22 -3
  141. package/dist/cjs/data/oracleInfo.js.map +1 -1
  142. package/dist/cjs/data/oracles.d.ts +62 -5
  143. package/dist/cjs/data/oracles.d.ts.map +1 -1
  144. package/dist/cjs/data/oracles.js +90 -11
  145. package/dist/cjs/data/oracles.js.map +1 -1
  146. package/dist/cjs/data/orgPayouts.d.ts +87 -0
  147. package/dist/cjs/data/orgPayouts.d.ts.map +1 -0
  148. package/dist/cjs/data/orgPayouts.js +183 -0
  149. package/dist/cjs/data/orgPayouts.js.map +1 -0
  150. package/dist/cjs/data/plans.d.ts +8 -0
  151. package/dist/cjs/data/plans.d.ts.map +1 -0
  152. package/dist/cjs/data/plans.js +12 -0
  153. package/dist/cjs/data/plans.js.map +1 -0
  154. package/dist/cjs/data/profiles.d.ts +20 -0
  155. package/dist/cjs/data/profiles.d.ts.map +1 -1
  156. package/dist/cjs/data/profiles.js +63 -4
  157. package/dist/cjs/data/profiles.js.map +1 -1
  158. package/dist/cjs/data/queue.d.ts.map +1 -1
  159. package/dist/cjs/data/queue.js +3 -2
  160. package/dist/cjs/data/queue.js.map +1 -1
  161. package/dist/cjs/data/receipt.d.ts +7 -0
  162. package/dist/cjs/data/receipt.d.ts.map +1 -1
  163. package/dist/cjs/data/receipt.js +25 -6
  164. package/dist/cjs/data/receipt.js.map +1 -1
  165. package/dist/cjs/data/resources.d.ts +3 -0
  166. package/dist/cjs/data/resources.d.ts.map +1 -1
  167. package/dist/cjs/data/resources.js +4 -1
  168. package/dist/cjs/data/resources.js.map +1 -1
  169. package/dist/cjs/data/threads.d.ts +14 -0
  170. package/dist/cjs/data/threads.d.ts.map +1 -1
  171. package/dist/cjs/data/threads.js +40 -23
  172. package/dist/cjs/data/threads.js.map +1 -1
  173. package/dist/cjs/data/trace.d.ts +8 -0
  174. package/dist/cjs/data/trace.d.ts.map +1 -1
  175. package/dist/cjs/data/trace.js +1 -1
  176. package/dist/cjs/data/trace.js.map +1 -1
  177. package/dist/cjs/data/traceWords.d.ts +4 -1
  178. package/dist/cjs/data/traceWords.d.ts.map +1 -1
  179. package/dist/cjs/data/traceWords.js +8 -2
  180. package/dist/cjs/data/traceWords.js.map +1 -1
  181. package/dist/cjs/data/why.d.ts +38 -0
  182. package/dist/cjs/data/why.d.ts.map +1 -0
  183. package/dist/cjs/data/why.js +86 -0
  184. package/dist/cjs/data/why.js.map +1 -0
  185. package/dist/cjs/data/whyReceipt.d.ts +33 -0
  186. package/dist/cjs/data/whyReceipt.d.ts.map +1 -0
  187. package/dist/cjs/data/whyReceipt.js +291 -0
  188. package/dist/cjs/data/whyReceipt.js.map +1 -0
  189. package/dist/cjs/geo/exifcarry.d.ts +9 -0
  190. package/dist/cjs/geo/exifcarry.d.ts.map +1 -1
  191. package/dist/cjs/geo/exifcarry.js +35 -0
  192. package/dist/cjs/geo/exifcarry.js.map +1 -1
  193. package/dist/cjs/geo/geohash.d.ts +25 -0
  194. package/dist/cjs/geo/geohash.d.ts.map +1 -0
  195. package/dist/cjs/geo/geohash.js +114 -0
  196. package/dist/cjs/geo/geohash.js.map +1 -0
  197. package/dist/cjs/geo/provenance.d.ts +41 -0
  198. package/dist/cjs/geo/provenance.d.ts.map +1 -0
  199. package/dist/cjs/geo/provenance.js +134 -0
  200. package/dist/cjs/geo/provenance.js.map +1 -0
  201. package/dist/cjs/rubric/bridge.d.ts +98 -2
  202. package/dist/cjs/rubric/bridge.d.ts.map +1 -1
  203. package/dist/cjs/rubric/bridge.js +132 -15
  204. package/dist/cjs/rubric/bridge.js.map +1 -1
  205. package/dist/cjs/rubric/card.d.ts +28 -14
  206. package/dist/cjs/rubric/card.d.ts.map +1 -1
  207. package/dist/cjs/rubric/card.js +28 -7
  208. package/dist/cjs/rubric/card.js.map +1 -1
  209. package/dist/cjs/rubric/claimForm.d.ts +116 -0
  210. package/dist/cjs/rubric/claimForm.d.ts.map +1 -1
  211. package/dist/cjs/rubric/claimForm.js +12 -1
  212. package/dist/cjs/rubric/claimForm.js.map +1 -1
  213. package/dist/cjs/rubric/compose.d.ts +5 -0
  214. package/dist/cjs/rubric/compose.d.ts.map +1 -1
  215. package/dist/cjs/rubric/compose.js +9 -3
  216. package/dist/cjs/rubric/compose.js.map +1 -1
  217. package/dist/cjs/rubric/gateMet.d.ts.map +1 -1
  218. package/dist/cjs/rubric/gateMet.js +4 -2
  219. package/dist/cjs/rubric/gateMet.js.map +1 -1
  220. package/dist/cjs/rubric/leg.d.ts +2 -2
  221. package/dist/cjs/rubric/leg.d.ts.map +1 -1
  222. package/dist/cjs/rubric/leg.js +7 -5
  223. package/dist/cjs/rubric/leg.js.map +1 -1
  224. package/dist/cjs/rubric/marketPlan.d.ts +182 -0
  225. package/dist/cjs/rubric/marketPlan.d.ts.map +1 -0
  226. package/dist/cjs/rubric/marketPlan.js +419 -0
  227. package/dist/cjs/rubric/marketPlan.js.map +1 -0
  228. package/dist/cjs/rubric/observation.d.ts +95 -0
  229. package/dist/cjs/rubric/observation.d.ts.map +1 -0
  230. package/dist/cjs/rubric/observation.js +88 -0
  231. package/dist/cjs/rubric/observation.js.map +1 -0
  232. package/dist/cjs/rubric/pingLink.d.ts +45 -0
  233. package/dist/cjs/rubric/pingLink.d.ts.map +1 -0
  234. package/dist/cjs/rubric/pingLink.js +74 -0
  235. package/dist/cjs/rubric/pingLink.js.map +1 -0
  236. package/dist/cjs/rubric/pingMatch.d.ts +73 -0
  237. package/dist/cjs/rubric/pingMatch.d.ts.map +1 -0
  238. package/dist/cjs/rubric/pingMatch.js +65 -0
  239. package/dist/cjs/rubric/pingMatch.js.map +1 -0
  240. package/dist/cjs/rubric/survey.d.ts +65 -0
  241. package/dist/cjs/rubric/survey.d.ts.map +1 -0
  242. package/dist/cjs/rubric/survey.js +101 -0
  243. package/dist/cjs/rubric/survey.js.map +1 -0
  244. package/dist/cjs/rubric/terms.d.ts +15 -0
  245. package/dist/cjs/rubric/terms.d.ts.map +1 -1
  246. package/dist/cjs/rubric/terms.js +14 -1
  247. package/dist/cjs/rubric/terms.js.map +1 -1
  248. package/dist/cjs/rubric.d.ts +1 -1
  249. package/dist/cjs/rubric.d.ts.map +1 -1
  250. package/dist/cjs/rubric.js +4 -2
  251. package/dist/cjs/rubric.js.map +1 -1
  252. package/dist/esm/campaign/campaign.js +4 -3
  253. package/dist/esm/campaign/campaign.js.map +1 -1
  254. package/dist/esm/campaign/funding.d.ts.map +1 -1
  255. package/dist/esm/campaign/funding.js +3 -0
  256. package/dist/esm/campaign/funding.js.map +1 -1
  257. package/dist/esm/campaign/pool.d.ts.map +1 -1
  258. package/dist/esm/campaign/pool.js +2 -1
  259. package/dist/esm/campaign/pool.js.map +1 -1
  260. package/dist/esm/campaign/spots.d.ts.map +1 -1
  261. package/dist/esm/campaign/spots.js +8 -6
  262. package/dist/esm/campaign/spots.js.map +1 -1
  263. package/dist/esm/chain/ask.d.ts +104 -14
  264. package/dist/esm/chain/ask.d.ts.map +1 -1
  265. package/dist/esm/chain/ask.js +152 -80
  266. package/dist/esm/chain/ask.js.map +1 -1
  267. package/dist/esm/chain/askImage.d.ts +19 -0
  268. package/dist/esm/chain/askImage.d.ts.map +1 -0
  269. package/dist/esm/chain/askImage.js +50 -0
  270. package/dist/esm/chain/askImage.js.map +1 -0
  271. package/dist/esm/chain/bridge.d.ts +7 -33
  272. package/dist/esm/chain/bridge.d.ts.map +1 -1
  273. package/dist/esm/chain/bridge.js +10 -24
  274. package/dist/esm/chain/bridge.js.map +1 -1
  275. package/dist/esm/chain/claimSubmit.d.ts +15 -0
  276. package/dist/esm/chain/claimSubmit.d.ts.map +1 -0
  277. package/dist/esm/chain/claimSubmit.js +10 -0
  278. package/dist/esm/chain/claimSubmit.js.map +1 -0
  279. package/dist/esm/chain/delegate.d.ts +52 -7
  280. package/dist/esm/chain/delegate.d.ts.map +1 -1
  281. package/dist/esm/chain/delegate.js +64 -13
  282. package/dist/esm/chain/delegate.js.map +1 -1
  283. package/dist/esm/chain/domainIndexer.d.ts +26 -0
  284. package/dist/esm/chain/domainIndexer.d.ts.map +1 -0
  285. package/dist/esm/chain/domainIndexer.js +48 -0
  286. package/dist/esm/chain/domainIndexer.js.map +1 -0
  287. package/dist/esm/chain/entityShape.d.ts +233 -0
  288. package/dist/esm/chain/entityShape.d.ts.map +1 -0
  289. package/dist/esm/chain/entityShape.js +231 -0
  290. package/dist/esm/chain/entityShape.js.map +1 -0
  291. package/dist/esm/chain/env.d.ts +103 -6
  292. package/dist/esm/chain/env.d.ts.map +1 -1
  293. package/dist/esm/chain/env.js +174 -12
  294. package/dist/esm/chain/env.js.map +1 -1
  295. package/dist/esm/chain/guest.d.ts +14 -0
  296. package/dist/esm/chain/guest.d.ts.map +1 -1
  297. package/dist/esm/chain/guest.js +7 -8
  298. package/dist/esm/chain/guest.js.map +1 -1
  299. package/dist/esm/chain/money.d.ts +47 -2
  300. package/dist/esm/chain/money.d.ts.map +1 -1
  301. package/dist/esm/chain/money.js +54 -4
  302. package/dist/esm/chain/money.js.map +1 -1
  303. package/dist/esm/chain/orgReviewBilling.d.ts +124 -0
  304. package/dist/esm/chain/orgReviewBilling.d.ts.map +1 -0
  305. package/dist/esm/chain/orgReviewBilling.js +241 -0
  306. package/dist/esm/chain/orgReviewBilling.js.map +1 -0
  307. package/dist/esm/chain/orgReviewBillingSign.d.ts +63 -0
  308. package/dist/esm/chain/orgReviewBillingSign.d.ts.map +1 -0
  309. package/dist/esm/chain/orgReviewBillingSign.js +124 -0
  310. package/dist/esm/chain/orgReviewBillingSign.js.map +1 -0
  311. package/dist/esm/chain/payoutSettings.d.ts +97 -0
  312. package/dist/esm/chain/payoutSettings.d.ts.map +1 -0
  313. package/dist/esm/chain/payoutSettings.js +111 -0
  314. package/dist/esm/chain/payoutSettings.js.map +1 -0
  315. package/dist/esm/chain/payoutTerms.d.ts +72 -0
  316. package/dist/esm/chain/payoutTerms.d.ts.map +1 -0
  317. package/dist/esm/chain/payoutTerms.js +127 -0
  318. package/dist/esm/chain/payoutTerms.js.map +1 -0
  319. package/dist/esm/chain/query.d.ts +14 -0
  320. package/dist/esm/chain/query.d.ts.map +1 -1
  321. package/dist/esm/chain/query.js +25 -0
  322. package/dist/esm/chain/query.js.map +1 -1
  323. package/dist/esm/chain/reviewBilling.d.ts +86 -0
  324. package/dist/esm/chain/reviewBilling.d.ts.map +1 -0
  325. package/dist/esm/chain/reviewBilling.js +215 -0
  326. package/dist/esm/chain/reviewBilling.js.map +1 -0
  327. package/dist/esm/chain/store.d.ts +7 -6
  328. package/dist/esm/chain/store.d.ts.map +1 -1
  329. package/dist/esm/chain/store.js +7 -6
  330. package/dist/esm/chain/store.js.map +1 -1
  331. package/dist/esm/chain/subscription.d.ts +0 -7
  332. package/dist/esm/chain/subscription.d.ts.map +1 -1
  333. package/dist/esm/chain/subscription.js +4 -13
  334. package/dist/esm/chain/subscription.js.map +1 -1
  335. package/dist/esm/chain/takeBack.d.ts +12 -0
  336. package/dist/esm/chain/takeBack.d.ts.map +1 -1
  337. package/dist/esm/chain/takeBack.js +22 -9
  338. package/dist/esm/chain/takeBack.js.map +1 -1
  339. package/dist/esm/chain/why.d.ts +44 -0
  340. package/dist/esm/chain/why.d.ts.map +1 -0
  341. package/dist/esm/chain/why.js +111 -0
  342. package/dist/esm/chain/why.js.map +1 -0
  343. package/dist/esm/chain/whyMint.d.ts +8 -0
  344. package/dist/esm/chain/whyMint.d.ts.map +1 -0
  345. package/dist/esm/chain/whyMint.js +17 -0
  346. package/dist/esm/chain/whyMint.js.map +1 -0
  347. package/dist/esm/chain.d.ts +8 -4
  348. package/dist/esm/chain.d.ts.map +1 -1
  349. package/dist/esm/chain.js +9 -4
  350. package/dist/esm/chain.js.map +1 -1
  351. package/dist/esm/config.d.ts +37 -5
  352. package/dist/esm/config.d.ts.map +1 -1
  353. package/dist/esm/config.js +9 -3
  354. package/dist/esm/config.js.map +1 -1
  355. package/dist/esm/data/agent.d.ts.map +1 -1
  356. package/dist/esm/data/agent.js +5 -4
  357. package/dist/esm/data/agent.js.map +1 -1
  358. package/dist/esm/data/askEntity.d.ts +40 -0
  359. package/dist/esm/data/askEntity.d.ts.map +1 -0
  360. package/dist/esm/data/askEntity.js +41 -0
  361. package/dist/esm/data/askEntity.js.map +1 -0
  362. package/dist/esm/data/askLinks.d.ts +6 -0
  363. package/dist/esm/data/askLinks.d.ts.map +1 -0
  364. package/dist/esm/data/askLinks.js +16 -0
  365. package/dist/esm/data/askLinks.js.map +1 -0
  366. package/dist/esm/data/board/assemble.d.ts.map +1 -1
  367. package/dist/esm/data/board/assemble.js +15 -2
  368. package/dist/esm/data/board/assemble.js.map +1 -1
  369. package/dist/esm/data/board/facts.d.ts +11 -0
  370. package/dist/esm/data/board/facts.d.ts.map +1 -1
  371. package/dist/esm/data/board/facts.js +15 -0
  372. package/dist/esm/data/board/facts.js.map +1 -1
  373. package/dist/esm/data/board/read.d.ts.map +1 -1
  374. package/dist/esm/data/board/read.js +2 -1
  375. package/dist/esm/data/board/read.js.map +1 -1
  376. package/dist/esm/data/board/types.d.ts +9 -0
  377. package/dist/esm/data/board/types.d.ts.map +1 -1
  378. package/dist/esm/data/board/types.js.map +1 -1
  379. package/dist/esm/data/docs.d.ts +10 -2
  380. package/dist/esm/data/docs.d.ts.map +1 -1
  381. package/dist/esm/data/docs.js +43 -4
  382. package/dist/esm/data/docs.js.map +1 -1
  383. package/dist/esm/data/format.js +1 -1
  384. package/dist/esm/data/format.js.map +1 -1
  385. package/dist/esm/data/install.d.ts +8 -0
  386. package/dist/esm/data/install.d.ts.map +1 -1
  387. package/dist/esm/data/install.js +8 -0
  388. package/dist/esm/data/install.js.map +1 -1
  389. package/dist/esm/data/oracleInfo.d.ts +6 -1
  390. package/dist/esm/data/oracleInfo.d.ts.map +1 -1
  391. package/dist/esm/data/oracleInfo.js +22 -3
  392. package/dist/esm/data/oracleInfo.js.map +1 -1
  393. package/dist/esm/data/oracles.d.ts +62 -5
  394. package/dist/esm/data/oracles.d.ts.map +1 -1
  395. package/dist/esm/data/oracles.js +87 -12
  396. package/dist/esm/data/oracles.js.map +1 -1
  397. package/dist/esm/data/orgPayouts.d.ts +87 -0
  398. package/dist/esm/data/orgPayouts.d.ts.map +1 -0
  399. package/dist/esm/data/orgPayouts.js +170 -0
  400. package/dist/esm/data/orgPayouts.js.map +1 -0
  401. package/dist/esm/data/plans.d.ts +8 -0
  402. package/dist/esm/data/plans.d.ts.map +1 -0
  403. package/dist/esm/data/plans.js +8 -0
  404. package/dist/esm/data/plans.js.map +1 -0
  405. package/dist/esm/data/profiles.d.ts +20 -0
  406. package/dist/esm/data/profiles.d.ts.map +1 -1
  407. package/dist/esm/data/profiles.js +60 -4
  408. package/dist/esm/data/profiles.js.map +1 -1
  409. package/dist/esm/data/queue.d.ts.map +1 -1
  410. package/dist/esm/data/queue.js +3 -2
  411. package/dist/esm/data/queue.js.map +1 -1
  412. package/dist/esm/data/receipt.d.ts +7 -0
  413. package/dist/esm/data/receipt.d.ts.map +1 -1
  414. package/dist/esm/data/receipt.js +26 -7
  415. package/dist/esm/data/receipt.js.map +1 -1
  416. package/dist/esm/data/resources.d.ts +3 -0
  417. package/dist/esm/data/resources.d.ts.map +1 -1
  418. package/dist/esm/data/resources.js +2 -0
  419. package/dist/esm/data/resources.js.map +1 -1
  420. package/dist/esm/data/threads.d.ts +14 -0
  421. package/dist/esm/data/threads.d.ts.map +1 -1
  422. package/dist/esm/data/threads.js +40 -24
  423. package/dist/esm/data/threads.js.map +1 -1
  424. package/dist/esm/data/trace.d.ts +8 -0
  425. package/dist/esm/data/trace.d.ts.map +1 -1
  426. package/dist/esm/data/trace.js +1 -1
  427. package/dist/esm/data/trace.js.map +1 -1
  428. package/dist/esm/data/traceWords.d.ts +4 -1
  429. package/dist/esm/data/traceWords.d.ts.map +1 -1
  430. package/dist/esm/data/traceWords.js +8 -2
  431. package/dist/esm/data/traceWords.js.map +1 -1
  432. package/dist/esm/data/why.d.ts +38 -0
  433. package/dist/esm/data/why.d.ts.map +1 -0
  434. package/dist/esm/data/why.js +78 -0
  435. package/dist/esm/data/why.js.map +1 -0
  436. package/dist/esm/data/whyReceipt.d.ts +33 -0
  437. package/dist/esm/data/whyReceipt.d.ts.map +1 -0
  438. package/dist/esm/data/whyReceipt.js +284 -0
  439. package/dist/esm/data/whyReceipt.js.map +1 -0
  440. package/dist/esm/geo/exifcarry.d.ts +9 -0
  441. package/dist/esm/geo/exifcarry.d.ts.map +1 -1
  442. package/dist/esm/geo/exifcarry.js +34 -0
  443. package/dist/esm/geo/exifcarry.js.map +1 -1
  444. package/dist/esm/geo/geohash.d.ts +25 -0
  445. package/dist/esm/geo/geohash.d.ts.map +1 -0
  446. package/dist/esm/geo/geohash.js +109 -0
  447. package/dist/esm/geo/geohash.js.map +1 -0
  448. package/dist/esm/geo/provenance.d.ts +41 -0
  449. package/dist/esm/geo/provenance.d.ts.map +1 -0
  450. package/dist/esm/geo/provenance.js +129 -0
  451. package/dist/esm/geo/provenance.js.map +1 -0
  452. package/dist/esm/rubric/bridge.d.ts +98 -2
  453. package/dist/esm/rubric/bridge.d.ts.map +1 -1
  454. package/dist/esm/rubric/bridge.js +130 -14
  455. package/dist/esm/rubric/bridge.js.map +1 -1
  456. package/dist/esm/rubric/card.d.ts +28 -14
  457. package/dist/esm/rubric/card.d.ts.map +1 -1
  458. package/dist/esm/rubric/card.js +24 -5
  459. package/dist/esm/rubric/card.js.map +1 -1
  460. package/dist/esm/rubric/claimForm.d.ts +116 -0
  461. package/dist/esm/rubric/claimForm.d.ts.map +1 -1
  462. package/dist/esm/rubric/claimForm.js +11 -0
  463. package/dist/esm/rubric/claimForm.js.map +1 -1
  464. package/dist/esm/rubric/compose.d.ts +5 -0
  465. package/dist/esm/rubric/compose.d.ts.map +1 -1
  466. package/dist/esm/rubric/compose.js +7 -2
  467. package/dist/esm/rubric/compose.js.map +1 -1
  468. package/dist/esm/rubric/gateMet.d.ts.map +1 -1
  469. package/dist/esm/rubric/gateMet.js +4 -2
  470. package/dist/esm/rubric/gateMet.js.map +1 -1
  471. package/dist/esm/rubric/leg.d.ts +2 -2
  472. package/dist/esm/rubric/leg.d.ts.map +1 -1
  473. package/dist/esm/rubric/leg.js +7 -5
  474. package/dist/esm/rubric/leg.js.map +1 -1
  475. package/dist/esm/rubric/marketPlan.d.ts +182 -0
  476. package/dist/esm/rubric/marketPlan.d.ts.map +1 -0
  477. package/dist/esm/rubric/marketPlan.js +403 -0
  478. package/dist/esm/rubric/marketPlan.js.map +1 -0
  479. package/dist/esm/rubric/observation.d.ts +95 -0
  480. package/dist/esm/rubric/observation.d.ts.map +1 -0
  481. package/dist/esm/rubric/observation.js +82 -0
  482. package/dist/esm/rubric/observation.js.map +1 -0
  483. package/dist/esm/rubric/pingLink.d.ts +45 -0
  484. package/dist/esm/rubric/pingLink.d.ts.map +1 -0
  485. package/dist/esm/rubric/pingLink.js +69 -0
  486. package/dist/esm/rubric/pingLink.js.map +1 -0
  487. package/dist/esm/rubric/pingMatch.d.ts +73 -0
  488. package/dist/esm/rubric/pingMatch.d.ts.map +1 -0
  489. package/dist/esm/rubric/pingMatch.js +60 -0
  490. package/dist/esm/rubric/pingMatch.js.map +1 -0
  491. package/dist/esm/rubric/survey.d.ts +65 -0
  492. package/dist/esm/rubric/survey.d.ts.map +1 -0
  493. package/dist/esm/rubric/survey.js +94 -0
  494. package/dist/esm/rubric/survey.js.map +1 -0
  495. package/dist/esm/rubric/terms.d.ts +15 -0
  496. package/dist/esm/rubric/terms.d.ts.map +1 -1
  497. package/dist/esm/rubric/terms.js +14 -2
  498. package/dist/esm/rubric/terms.js.map +1 -1
  499. package/dist/esm/rubric.d.ts +1 -1
  500. package/dist/esm/rubric.d.ts.map +1 -1
  501. package/dist/esm/rubric.js +1 -1
  502. package/dist/esm/rubric.js.map +1 -1
  503. package/package.json +8 -2
@@ -0,0 +1,78 @@
1
+ /**
2
+ * Why a claim was decided, as the oracle tells its claimant: `GET <oracle>/openhands/claims/:id/why`
3
+ * (openhands-oracle `src/openhands/why.ts`). Parsed strictly: any other shape, the old
4
+ * `verdict/gates/findings` one included, is null, and a reader says `WHY_UNREADABLE` instead.
5
+ * Pure and dependency-free, so it rides into a browser chunk for a few hundred bytes.
6
+ */
7
+ export const WHY_UNREADABLE = "Couldn't load the reason";
8
+ /** The result in words, for a screen reader and for the eye alike: never colour alone. */
9
+ export const RESULT_WORD = { pass: "Passed", fail: "Failed", error: "Couldn't check", review: "Needs a person" };
10
+ const OUTCOMES = ["approved", "rejected", "review", "pending"];
11
+ const RESULTS = ["pass", "fail", "error", "review"];
12
+ const GRADES = ["camera", "browser-reported", "none"];
13
+ const text = (v, max = 600) => typeof v === "string" && v.length <= max;
14
+ const amount = (v) => v === undefined || (typeof v === "number" && Number.isFinite(v)) || text(v, 60);
15
+ const optional = (v, max = 600) => v === undefined || text(v, max);
16
+ function reasonOf(raw) {
17
+ if (!raw || typeof raw !== "object" || Array.isArray(raw))
18
+ return null;
19
+ const r = raw;
20
+ if (!text(r.code, 120) || !text(r.label, 200) || !RESULTS.includes(r.result) || !text(r.detail))
21
+ return null;
22
+ if (!amount(r.value) || !amount(r.threshold) || !optional(r.unit, 20))
23
+ return null;
24
+ const { code, label, result, detail, value, threshold, unit } = r;
25
+ return { code, label, result, detail, ...(value !== undefined ? { value } : {}), ...(threshold !== undefined ? { threshold } : {}), ...(unit ? { unit } : {}) };
26
+ }
27
+ /** The body, or null for anything that is not exactly this shape. */
28
+ export function parseWhy(raw) {
29
+ if (!raw || typeof raw !== "object" || Array.isArray(raw))
30
+ return null;
31
+ const w = raw;
32
+ if (!OUTCOMES.includes(w.outcome) || !text(w.summary, 1000) || !w.summary || !Array.isArray(w.reasons) || w.reasons.length > 50)
33
+ return null;
34
+ if (w.evidenceGrade !== undefined && !GRADES.includes(w.evidenceGrade))
35
+ return null;
36
+ if (!optional(w.reviewNote, 1000) || !optional(w.receiptCid, 200))
37
+ return null;
38
+ const reasons = w.reasons.map(reasonOf);
39
+ if (reasons.some((one) => !one))
40
+ return null;
41
+ const { outcome, summary, evidenceGrade, reviewNote, receiptCid } = w;
42
+ return { outcome, summary, reasons: reasons, ...(evidenceGrade ? { evidenceGrade } : {}), ...(reviewNote ? { reviewNote } : {}), ...(receiptCid ? { receiptCid } : {}) };
43
+ }
44
+ const num = (v, unit) => `${typeof v === "number" ? v.toLocaleString("en-US") : v}${unit ? `${unit === "%" ? "" : " "}${unit}` : ""}`;
45
+ /** "2,000 m (limit 200 m)", "2,000 m", or "" when the reason carries no measure. */
46
+ export function measureOf(reason) {
47
+ if (reason.value === undefined)
48
+ return reason.threshold === undefined ? "" : `limit ${num(reason.threshold, reason.unit)}`;
49
+ return reason.threshold === undefined ? num(reason.value, reason.unit) : `${num(reason.value, reason.unit)} (limit ${num(reason.threshold, reason.unit)})`;
50
+ }
51
+ /** What a reason adds to its label: the measure, then the detail minus anything that repeats the label, the measure or the result. */
52
+ export function reasonText(reason) {
53
+ const rest = reason.detail.startsWith(`${reason.label}: `) ? reason.detail.slice(reason.label.length + 2) : reason.detail;
54
+ const measure = measureOf(reason);
55
+ const said = rest === reason.label || rest === RESULT_WORD[reason.result] || rest === "Did not pass" ? "" : rest;
56
+ /* The oracle's detail usually says the measure already ("100% (needs 70%)"): then it alone. */
57
+ const sayMeasured = reason.value !== undefined && said.startsWith(num(reason.value, reason.unit));
58
+ return [sayMeasured ? "" : measure, said].filter(Boolean).join(". ");
59
+ }
60
+ /** "Time/place: browser-reported", or null. */
61
+ export const evidenceLine = (why) => (why.evidenceGrade ? `Time/place: ${why.evidenceGrade}` : null);
62
+ /** The whole answer as plain lines (MCP `check_verdict`); null is the graceful message. */
63
+ export function whyLines(why, indent = "") {
64
+ if (!why)
65
+ return [`${indent}${WHY_UNREADABLE}.`];
66
+ const lines = [`${indent}${why.summary}`];
67
+ for (const reason of why.reasons) {
68
+ const said = reasonText(reason);
69
+ lines.push(`${indent} ${RESULT_WORD[reason.result]}: ${reason.label}${said ? ` — ${said}` : ""}`);
70
+ }
71
+ const evidence = evidenceLine(why);
72
+ if (evidence)
73
+ lines.push(`${indent}${evidence}`);
74
+ if (why.outcome === "review" && why.reviewNote)
75
+ lines.push(`${indent}${why.reviewNote}`);
76
+ return lines;
77
+ }
78
+ //# sourceMappingURL=why.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"why.js","sourceRoot":"","sources":["../../../src/data/why.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * The claimant's "why", rebuilt from the PUBLIC engine receipt, for everyone the oracle's
3
+ * `/openhands/claims/:id/why` cannot answer: a passkey or guest claimant (no signing key), an MCP
4
+ * acting for a connected person, the hosted MCP. Same `Why` shape and the same rules as the
5
+ * oracle's mapper (openhands-oracle `src/openhands/explain.ts`), minus what only the oracle holds:
6
+ * the receipt carries codes, outcomes and scores, never the frozen facts, so there are no measured
7
+ * distances, no AI sentence and no time/place grade here.
8
+ *
9
+ * Worker-safe: only the rubric's own public sentences and fixed words reach a detail, scrubbed of
10
+ * identifiers; the rubric's AI instructions are never read, nor the receipt's payee, company,
11
+ * digests or trace. Duplicate-photo findings say only that the photo was used before.
12
+ * Pure: `chain/why.ts` fetches the receipt and the verified rubric and calls this.
13
+ */
14
+ import type { Why } from "./why.ts";
15
+ export declare const PENDING_WHY: Why;
16
+ export declare const scrub: (text: string, n?: number) => string;
17
+ /** `SD-101-PHOTO` → "Photo", `OH-102-LENGTH` → "Length": the words a code carries when no rubric does. */
18
+ export declare function codeLabel(code: string): string;
19
+ /** Where the receipt's rubric is anchored, and the id its bytes must hash to; null when it names none. */
20
+ export declare function receiptRubric(receipt: unknown): {
21
+ protocolDid: string;
22
+ rubricId: string;
23
+ } | null;
24
+ /**
25
+ * The `Why` a receipt supports, or null for anything that is not an engine receipt. `rubric` is the
26
+ * protocol's `#rub` document with the id its bytes hash to; its words are used only when that id is
27
+ * the receipt's `rubric.id`, so a protocol re-anchored since never lends the wrong labels.
28
+ */
29
+ export declare function whyFromReceipt(receipt: unknown, rubric?: {
30
+ id: string;
31
+ doc: unknown;
32
+ } | null): Why | null;
33
+ //# sourceMappingURL=whyReceipt.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"whyReceipt.d.ts","sourceRoot":"","sources":["../../../src/data/whyReceipt.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,GAAG,EAAwB,MAAM,UAAU,CAAC;AAS1D,eAAO,MAAM,WAAW,EAAE,GAAkH,CAAC;AAa7I,eAAO,MAAM,KAAK,GAAI,MAAM,MAAM,EAAE,UAAO,KAAG,MAAyG,CAAC;AAmCxJ,0GAA0G;AAC1G,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAG9C;AAsFD,0GAA0G;AAC1G,wBAAgB,aAAa,CAAC,OAAO,EAAE,OAAO,GAAG;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAKhG;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,OAAO,CAAA;CAAE,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,CAuHzG"}
@@ -0,0 +1,284 @@
1
+ /**
2
+ * The claimant's "why", rebuilt from the PUBLIC engine receipt, for everyone the oracle's
3
+ * `/openhands/claims/:id/why` cannot answer: a passkey or guest claimant (no signing key), an MCP
4
+ * acting for a connected person, the hosted MCP. Same `Why` shape and the same rules as the
5
+ * oracle's mapper (openhands-oracle `src/openhands/explain.ts`), minus what only the oracle holds:
6
+ * the receipt carries codes, outcomes and scores, never the frozen facts, so there are no measured
7
+ * distances, no AI sentence and no time/place grade here.
8
+ *
9
+ * Worker-safe: only the rubric's own public sentences and fixed words reach a detail, scrubbed of
10
+ * identifiers; the rubric's AI instructions are never read, nor the receipt's payee, company,
11
+ * digests or trace. Duplicate-photo findings say only that the photo was used before.
12
+ * Pure: `chain/why.ts` fetches the receipt and the verified rubric and calls this.
13
+ */
14
+ const str = (v) => (typeof v === "string" && v ? v : undefined);
15
+ const obj = (v) => (v && typeof v === "object" && !Array.isArray(v) ? v : undefined);
16
+ const list = (v) => (Array.isArray(v) ? v.map(obj).filter((x) => !!x) : []);
17
+ export const PENDING_WHY = { outcome: "pending", summary: "Not decided yet: the checks on your claim are still running.", reasons: [] };
18
+ /* ---- scrubbing: a rubric is public text, but a detail must never carry an identifier ---- */
19
+ const HIDDEN = "[hidden]";
20
+ const SCRUB = [
21
+ /\b(?:https?:\/\/|www\.)\S+/gi,
22
+ /[\w.+-]+@[\w-]+(?:\.[\w-]+)+/g,
23
+ /\bdid:[a-z0-9]+:[^\s,;)]+/gi,
24
+ /\bixo1[a-z0-9]{38,58}\b/g,
25
+ /\b(?:baf[a-z2-7]{20,}|[A-Za-z0-9]{30,})\b/g
26
+ ];
27
+ const capped = (s, n = 160) => (s.length > n ? `${s.slice(0, n - 1).trimEnd()}…` : s);
28
+ export const scrub = (text, n = 280) => capped(SCRUB.reduce((out, re) => out.replace(re, HIDDEN), text).replace(/\s+/g, " ").trim(), n);
29
+ /* ---- labels, as the oracle words them ---- */
30
+ const FACT_LABELS = {
31
+ withinRadius: "Distance to the place",
32
+ withinAskRadius: "Distance to the boat",
33
+ located: "Location reported",
34
+ beforeAfter: "Before and after photos",
35
+ notAlreadyMapped: "Not already reported here",
36
+ cooldown: "Not reported here recently",
37
+ daylight: "Light matches the time",
38
+ weather: "Weather matches",
39
+ reMeasure: "Status re-measured",
40
+ openhandsSite: "Site marker",
41
+ notElsewhere: "Photo taken at the place",
42
+ notMarkedGenerated: "Photo not AI-generated",
43
+ photoShape: "Photo shape",
44
+ atPoint: "At the point",
45
+ mappedGrid: "Mapped area",
46
+ jobStillOpen: "Job still open",
47
+ freshPhoto: "Fresh after photo",
48
+ barnaclesGone: "Cleanliness",
49
+ sameBoat: "Same boat in both photos"
50
+ };
51
+ const humanise = (s) => s
52
+ .replace(/^\$/, "")
53
+ .replace(/([a-z])([A-Z])/g, "$1 $2")
54
+ .replace(/[._-]+/g, " ")
55
+ .trim()
56
+ .replace(/^./, (c) => c.toUpperCase())
57
+ .replace(/(?<=\s)([A-Z])(?=[a-z])/g, (c) => c.toLowerCase());
58
+ /** `SD-101-PHOTO` → "Photo", `OH-102-LENGTH` → "Length": the words a code carries when no rubric does. */
59
+ export function codeLabel(code) {
60
+ const words = /^[A-Z0-9]+-\d+-([A-Z0-9-]+)$/.exec(code)?.[1];
61
+ return words ? humanise(words.toLowerCase()) : humanise(code);
62
+ }
63
+ function leaves(node, out = []) {
64
+ if (Array.isArray(node))
65
+ for (const n of node)
66
+ leaves(n, out);
67
+ else if (node && typeof node === "object") {
68
+ const o = node;
69
+ if (typeof o.field === "string")
70
+ out.push(o);
71
+ for (const [k, v] of Object.entries(o))
72
+ if (k !== "value")
73
+ leaves(v, out);
74
+ }
75
+ return out;
76
+ }
77
+ /** The facts a condition reads, each once, with the `.score` it must reach where it compares one. */
78
+ function factRefs(...nodes) {
79
+ const refs = new Map();
80
+ for (const leaf of nodes.flatMap((n) => leaves(n))) {
81
+ const m = /^(ext|ai)\.([A-Za-z0-9_]+)\.(valid|score)$/.exec(leaf.field);
82
+ if (!m)
83
+ continue;
84
+ const key = `${m[1]}.${m[2]}`;
85
+ const ref = refs.get(key) ?? { lane: m[1], name: m[2] };
86
+ if (m[3] === "score" && typeof leaf.value === "number" && /^>=?$/.test(String(leaf.op)))
87
+ ref.threshold = Math.max(ref.threshold ?? 0, leaf.value);
88
+ refs.set(key, ref);
89
+ }
90
+ return [...refs.values()];
91
+ }
92
+ function factLabel(ref, rubricReason) {
93
+ const known = FACT_LABELS[ref.name] ?? FACT_LABELS[ref.name.replace(/\d+$/, "")];
94
+ if (known)
95
+ return known;
96
+ if (ref.lane === "ai" && rubricReason)
97
+ return capped(rubricReason);
98
+ return humanise(ref.name);
99
+ }
100
+ function fieldLabel(when, rubricReason) {
101
+ const ops = leaves(when);
102
+ const op = String(ops[0]?.op ?? "");
103
+ const fields = [...new Set(ops.map((l) => String(l.field)))];
104
+ const what = fields.length === 1 ? humanise(fields[0] ?? "") : "Files";
105
+ if (op === "present")
106
+ return `${what} handed in`;
107
+ if (op === "mediaTypeIn")
108
+ return `${what === "Files" ? "File" : what} type`;
109
+ if (op === "maxSizeMB")
110
+ return `${what === "Files" ? "File" : what} size`;
111
+ return rubricReason ? capped(rubricReason) : what;
112
+ }
113
+ function viewOf(doc) {
114
+ const rubric = obj(obj(doc)?.rubric);
115
+ if (!rubric)
116
+ return null;
117
+ const unique = obj(rubric.unique);
118
+ const frequency = obj(rubric.frequency);
119
+ return {
120
+ gates: list(rubric.gates).flatMap((g) => (str(g.code) ? [{ code: g.code, reason: str(g.reason), when: obj(g.when) }] : [])),
121
+ criteria: list(obj(rubric.scoring)?.criteria).flatMap((c) => str(c.code) ? [{ code: c.code, reason: str(c.reason), appliesWhen: obj(c.appliesWhen), score: obj(c.score) }] : []),
122
+ ...(unique ? { unique: { label: str(unique.label) } } : {}),
123
+ ...(frequency ? { frequency: { label: str(frequency.label), max: typeof frequency.max === "number" ? frequency.max : undefined, per: str(frequency.per) } } : {})
124
+ };
125
+ }
126
+ /* ---- the mapper ---- */
127
+ const GATE_RESULT = { passed: "pass", failed: "fail", unevaluated: "error" };
128
+ const UNCHECKED = "could not be checked automatically";
129
+ const sentence = (s) => (/[.!?…]$/.test(s) ? s : `${s}.`);
130
+ const fmt = (n) => n.toLocaleString("en-US", { maximumFractionDigits: 2 });
131
+ /** The receipt's evaluation block and its address: a bare v3 credential, the engine's `?format=json` wrapper, or a legacy v2 payload. */
132
+ function evaluationOf(doc) {
133
+ const outer = obj(doc);
134
+ const claimset = obj(outer?.payload) ?? outer;
135
+ const subject = obj(claimset?.credentialSubject);
136
+ const evaluation = obj(subject?.evaluation) ?? obj(claimset?.ixo);
137
+ return evaluation ? { evaluation, decision: obj(subject?.decision), cid: str(outer?.cid) } : null;
138
+ }
139
+ /** Where the receipt's rubric is anchored, and the id its bytes must hash to; null when it names none. */
140
+ export function receiptRubric(receipt) {
141
+ const evaluation = evaluationOf(receipt)?.evaluation;
142
+ const protocolDid = str(evaluation?.protocolDid);
143
+ const rubricId = str(obj(evaluation?.rubric)?.id);
144
+ return protocolDid && rubricId ? { protocolDid, rubricId } : null;
145
+ }
146
+ /**
147
+ * The `Why` a receipt supports, or null for anything that is not an engine receipt. `rubric` is the
148
+ * protocol's `#rub` document with the id its bytes hash to; its words are used only when that id is
149
+ * the receipt's `rubric.id`, so a protocol re-anchored since never lends the wrong labels.
150
+ */
151
+ export function whyFromReceipt(receipt, rubric) {
152
+ const found = evaluationOf(receipt);
153
+ if (!found)
154
+ return null;
155
+ const { evaluation, cid } = found;
156
+ const verdict = str(evaluation.verdict);
157
+ if (!verdict)
158
+ return null;
159
+ const receiptCid = cid ? { receiptCid: cid } : {};
160
+ if (evaluation.status === "unusable") {
161
+ return { ...PENDING_WHY, summary: "Not decided yet: your claim could not be checked automatically. Nothing is needed from you.", ...receiptCid };
162
+ }
163
+ const resOutcome = obj(evaluation.res)?.outcome;
164
+ const outcome = verdict === "review" || resOutcome === 5 ? "review" : verdict === "approve" || verdict === "partial" ? "approved" : verdict === "reject" ? "rejected" : "pending";
165
+ const rubricId = str(obj(evaluation.rubric)?.id);
166
+ const view = rubric && rubricId && rubric.id.toLowerCase() === rubricId.toLowerCase() ? viewOf(rubric.doc) : null;
167
+ /* "held for a person" only when one is: a check that could not run on a rejected claim was not held. */
168
+ const held = outcome === "review" ? `${UNCHECKED}: held for a person` : UNCHECKED;
169
+ const reasons = [];
170
+ const seen = new Set();
171
+ const covered = new Set();
172
+ const push = (r) => {
173
+ const clean = { ...r, label: scrub(r.label, 200), detail: scrub(r.detail) };
174
+ /* Said once: the same answer, or a bare pass/fail on a check already said (a criterion restating its gate). */
175
+ const key = `${clean.result}|${clean.label}`;
176
+ const bare = clean.detail === "Passed" || clean.detail === "Did not pass";
177
+ if (seen.has(`${key}|${clean.detail}`) || (bare && seen.has(key)))
178
+ return;
179
+ seen.add(key).add(`${key}|${clean.detail}`);
180
+ reasons.push(clean);
181
+ };
182
+ const special = (code, result) => {
183
+ if (code.startsWith("unique:")) {
184
+ push({ code: code.slice(7), label: view?.unique?.label ?? "Photo not used before", result, detail: result === "fail" ? "This photo was already used in another claim" : "Passed" });
185
+ return true;
186
+ }
187
+ if (code.startsWith("frequency:")) {
188
+ const f = view?.frequency;
189
+ push({
190
+ code: code.slice(10),
191
+ label: f?.label ?? "Claim limit",
192
+ result,
193
+ detail: result !== "fail" ? "Passed" : f?.max !== undefined && f.per ? `Limit reached: at most ${fmt(f.max)} claims a ${f.per}` : "Limit reached",
194
+ ...(f?.max !== undefined ? { threshold: f.max } : {})
195
+ });
196
+ return true;
197
+ }
198
+ return false;
199
+ };
200
+ const checks = list(evaluation.checks);
201
+ const checkOf = (ref) => checks.find((c) => c.kind === ref.lane && c.name === ref.name);
202
+ /** One gate or criterion read through the single fact it tests (the oracle's `factReason`, without the fact). */
203
+ const throughFact = (code, result, ref, reason, criterion = false) => {
204
+ covered.add(`${ref.lane}.${ref.name}`);
205
+ const label = factLabel(ref, reason);
206
+ /* An ext score the receipt records (basis points, as the rubric compares it): said as the oracle says it. */
207
+ const scored = ref.lane === "ext" && ref.threshold !== undefined && (result === "pass" || result === "fail") ? Number(checkOf(ref)?.verdict) : NaN;
208
+ if (Number.isFinite(scored) && scored >= 0 && scored <= 10_000) {
209
+ const value = Math.round(scored / 100);
210
+ const threshold = Math.round(ref.threshold / 100);
211
+ return push({ code, label, result, detail: `${label}: ${value}% (needs ${threshold}%)`, value, threshold, unit: "%" });
212
+ }
213
+ push({ code, label, result, detail: result === "error" ? `${label}: ${held}` : result === "review" ? `${label}: a person is checking this` : result === "pass" ? "Passed" : criterion ? "Did not pass" : (reason ?? "Did not pass") });
214
+ };
215
+ for (const gate of list(evaluation.gates)) {
216
+ const code = str(gate.code);
217
+ const result = GATE_RESULT[String(gate.outcome)];
218
+ if (!code || !result || special(code, result))
219
+ continue;
220
+ const spec = view?.gates.find((g) => g.code === code);
221
+ const refs = factRefs(spec?.when);
222
+ if (refs.length === 1)
223
+ throughFact(code, result, refs[0], spec?.reason);
224
+ else {
225
+ const label = spec ? fieldLabel(spec.when, spec.reason) : codeLabel(code);
226
+ push({ code, label, result, detail: result === "pass" ? "Passed" : result === "fail" ? (spec?.reason ?? "Did not pass") : `${label}: ${held}` });
227
+ }
228
+ }
229
+ for (const c of list(evaluation.criteria)) {
230
+ const code = str(c.code);
231
+ if (!code)
232
+ continue;
233
+ /* A criterion still pending on a claim already decided waits on nobody: not said. */
234
+ const result = c.pending === true ? (outcome === "review" ? "review" : null) : typeof c.scoreBps !== "number" ? null : c.scoreBps >= 5000 ? "pass" : "fail";
235
+ if (!result)
236
+ continue;
237
+ const spec = view?.criteria.find((s) => s.code === code);
238
+ const refs = factRefs(spec?.appliesWhen, spec?.score);
239
+ if (refs.length === 1 && result !== "review")
240
+ throughFact(code, result, refs[0], spec?.reason, true);
241
+ else {
242
+ const label = spec?.reason ? capped(spec.reason) : codeLabel(code);
243
+ push({ code, label, result, detail: result === "review" ? "A person is checking this" : result === "pass" ? "Passed" : "Did not pass" });
244
+ }
245
+ }
246
+ /* A check no gate or criterion above spoke for, said only when it failed or could not run. */
247
+ for (const check of checks) {
248
+ const name = str(check.name);
249
+ const kind = str(check.kind);
250
+ if (!name || !kind)
251
+ continue;
252
+ const errored = check.status === "error";
253
+ const failed = check.verdict === "fail" || check.verdict === "false" || (kind === "frequency" && check.verdict !== "ok" && check.verdict !== "pass");
254
+ if (!errored && !failed)
255
+ continue;
256
+ const result = errored ? "error" : "fail";
257
+ if (kind === "unique" || kind === "frequency") {
258
+ special(name.includes(":") ? name : `${kind}:${name}`, result);
259
+ continue;
260
+ }
261
+ if ((kind !== "ai" && kind !== "ext") || covered.has(`${kind}.${name}`))
262
+ continue;
263
+ const ref = { lane: kind, name };
264
+ const spec = [...(view?.gates.map((g) => ({ reason: g.reason, refs: factRefs(g.when) })) ?? []), ...(view?.criteria.map((s) => ({ reason: s.reason, refs: factRefs(s.appliesWhen, s.score) })) ?? [])].find((one) => one.refs.some((r) => r.lane === kind && r.name === name));
265
+ throughFact(`${kind}.${name}`, result, ref, spec?.reason);
266
+ }
267
+ if (outcome === "review" && !reasons.some((r) => r.result === "error" || r.result === "review")) {
268
+ push({ code: "review", label: "Checked by a person", result: "review", detail: "A person is checking your claim" });
269
+ }
270
+ return { outcome, summary: summaryOf(outcome, verdict, reasons), reasons, ...receiptCid };
271
+ }
272
+ function summaryOf(outcome, verdict, reasons) {
273
+ if (outcome === "approved")
274
+ return verdict === "partial" ? "Approved in part: some checks fell short." : "Approved: every check passed.";
275
+ if (outcome === "rejected") {
276
+ const first = reasons.find((r) => r.result === "fail");
277
+ return first ? `Rejected. ${first.detail === "Did not pass" ? `${first.label} did not pass.` : sentence(first.detail)}` : "Rejected.";
278
+ }
279
+ if (outcome === "pending")
280
+ return PENDING_WHY.summary;
281
+ const held = reasons.find((r) => r.result === "error" || r.result === "review");
282
+ return held ? `Held for a person to check. ${sentence(held.result === "review" ? held.label : held.detail)}` : "Held for a person to check.";
283
+ }
284
+ //# sourceMappingURL=whyReceipt.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"whyReceipt.js","sourceRoot":"","sources":["../../../src/data/whyReceipt.ts"],"names":[],"mappings":"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"}
@@ -28,4 +28,13 @@ export declare function exifSegment(bytes: Uint8Array): Uint8Array | null;
28
28
  * it meets. One photograph, one answer about where it was taken.
29
29
  */
30
30
  export declare function withExifSegment(jpeg: Uint8Array, segment: Uint8Array): Uint8Array;
31
+ /**
32
+ * The same segment, saying Orientation = 1.
33
+ *
34
+ * After a canvas redraw the pixels already stand the right way up (the decode
35
+ * applies the tag), so carrying the camera's 6 or 8 makes every viewer turn
36
+ * the picture a second time. Same length, one value changed: every other tag,
37
+ * DateTimeOriginal and GPS included, stays byte for byte.
38
+ */
39
+ export declare function uprightSegment(segment: Uint8Array): Uint8Array;
31
40
  //# sourceMappingURL=exifcarry.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"exifcarry.d.ts","sourceRoot":"","sources":["../../../src/geo/exifcarry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,wEAAwE;AACxE,wBAAgB,WAAW,CAAC,KAAK,EAAE,UAAU,GAAG,UAAU,GAAG,IAAI,CAiBhE;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,UAAU,GAAG,UAAU,CAqBjF"}
1
+ {"version":3,"file":"exifcarry.d.ts","sourceRoot":"","sources":["../../../src/geo/exifcarry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,wEAAwE;AACxE,wBAAgB,WAAW,CAAC,KAAK,EAAE,UAAU,GAAG,UAAU,GAAG,IAAI,CAiBhE;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,UAAU,GAAG,UAAU,CAqBjF;AAED;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,UAAU,GAAG,UAAU,CAqB9D"}
@@ -74,4 +74,38 @@ export function withExifSegment(jpeg, segment) {
74
74
  out.set(jpeg.slice(at), 2 + segment.length + kept.length);
75
75
  return out;
76
76
  }
77
+ /**
78
+ * The same segment, saying Orientation = 1.
79
+ *
80
+ * After a canvas redraw the pixels already stand the right way up (the decode
81
+ * applies the tag), so carrying the camera's 6 or 8 makes every viewer turn
82
+ * the picture a second time. Same length, one value changed: every other tag,
83
+ * DateTimeOriginal and GPS included, stays byte for byte.
84
+ */
85
+ export function uprightSegment(segment) {
86
+ const out = segment.slice();
87
+ const tiff = 10;
88
+ if (out.length < tiff + 8)
89
+ return out;
90
+ const view = new DataView(out.buffer, out.byteOffset, out.byteLength);
91
+ const order = view.getUint16(tiff, false);
92
+ if (order !== 0x4949 && order !== 0x4d4d)
93
+ return out;
94
+ const little = order === 0x4949;
95
+ const ifd0 = tiff + view.getUint32(tiff + 4, little);
96
+ if (ifd0 + 2 > out.length)
97
+ return out;
98
+ const count = view.getUint16(ifd0, little);
99
+ for (let index = 0; index < count; index += 1) {
100
+ const entry = ifd0 + 2 + index * 12;
101
+ if (entry + 12 > out.length)
102
+ break;
103
+ /* SHORT, count 1: the value sits inline in the entry's first two bytes. */
104
+ if (view.getUint16(entry, little) === 0x0112 && view.getUint16(entry + 2, little) === 3) {
105
+ view.setUint16(entry + 8, 1, little);
106
+ break;
107
+ }
108
+ }
109
+ return out;
110
+ }
77
111
  //# sourceMappingURL=exifcarry.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"exifcarry.js","sourceRoot":"","sources":["../../../src/geo/exifcarry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"exifcarry.js","sourceRoot":"","sources":["../../../src/geo/exifcarry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,wEAAwE;AACxE,MAAM,UAAU,WAAW,CAAC,KAAiB;IAC3C,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAC5E,IAAI,EAAE,GAAG,CAAC,CAAC;IACX,OAAO,EAAE,GAAG,CAAC,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;QAC9B,IAAI,KAAK,CAAC,EAAE,CAAC,KAAK,IAAI;YAAE,OAAO,IAAI,CAAC;QACpC,MAAM,MAAM,GAAG,KAAK,CAAC,EAAE,GAAG,CAAC,CAAE,CAAC;QAC9B,oEAAoE;QACpE,IAAI,MAAM,KAAK,IAAI;YAAE,OAAO,IAAI,CAAC;QACjC,MAAM,MAAM,GAAG,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,CAAE,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,EAAE,GAAG,CAAC,CAAE,CAAC;QACtD,IAAI,MAAM,GAAG,CAAC;YAAE,OAAO,IAAI,CAAC;QAC5B,IAAI,MAAM,KAAK,IAAI,IAAI,EAAE,GAAG,EAAE,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;YAC/C,MAAM,MAAM,GAAG,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,KAAK,IAAI,IAAI,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,KAAK,IAAI,IAAI,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,KAAK,IAAI,IAAI,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,KAAK,IAAI,CAAC;YACpH,IAAI,MAAM;gBAAE,OAAO,KAAK,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC;QACtD,CAAC;QACD,EAAE,IAAI,CAAC,GAAG,MAAM,CAAC;IACnB,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,eAAe,CAAC,IAAgB,EAAE,OAAmB;IACnE,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAEzE,MAAM,IAAI,GAAa,EAAE,CAAC;IAC1B,IAAI,EAAE,GAAG,CAAC,CAAC;IACX,OAAO,EAAE,GAAG,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;QAC7B,IAAI,IAAI,CAAC,EAAE,CAAC,KAAK,IAAI;YAAE,MAAM;QAC7B,MAAM,MAAM,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,CAAE,CAAC;QAC7B,IAAI,MAAM,KAAK,IAAI;YAAE,MAAM;QAC3B,MAAM,MAAM,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAE,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,CAAE,CAAC;QACpD,IAAI,MAAM,GAAG,CAAC;YAAE,MAAM;QACtB,IAAI,MAAM,KAAK,IAAI;YAAE,IAAI,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QAC/E,EAAE,IAAI,CAAC,GAAG,MAAM,CAAC;IACnB,CAAC;IAED,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,CAAC,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC;IAClF,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;IACzB,GAAG,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IACpB,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACnD,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;IAC1D,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,cAAc,CAAC,OAAmB;IAChD,MAAM,GAAG,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;IAC5B,MAAM,IAAI,GAAG,EAAE,CAAC;IAChB,IAAI,GAAG,CAAC,MAAM,GAAG,IAAI,GAAG,CAAC;QAAE,OAAO,GAAG,CAAC;IACtC,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,UAAU,CAAC,CAAC;IACtE,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAC1C,IAAI,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,MAAM;QAAE,OAAO,GAAG,CAAC;IACrD,MAAM,MAAM,GAAG,KAAK,KAAK,MAAM,CAAC;IAChC,MAAM,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC;IACrD,IAAI,IAAI,GAAG,CAAC,GAAG,GAAG,CAAC,MAAM;QAAE,OAAO,GAAG,CAAC;IACtC,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAC3C,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,KAAK,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QAC9C,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,GAAG,KAAK,GAAG,EAAE,CAAC;QACpC,IAAI,KAAK,GAAG,EAAE,GAAG,GAAG,CAAC,MAAM;YAAE,MAAM;QACnC,2EAA2E;QAC3E,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,MAAM,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;YACxF,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;YACrC,MAAM;QACR,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Geohash, for where a person says they are most days.
3
+ *
4
+ * Ask the World keeps a person's home as a coarse cell, never a point: six
5
+ * characters is a cell about 1.2 km × 0.6 km, enough to know who is near an
6
+ * ask and too coarse to find a front door. The registry stores the cell; the
7
+ * matcher reads its centre. Standard base-32 geohash, so any tool can read it.
8
+ */
9
+ import type { GeoPoint } from "./box.ts";
10
+ /** The cell a point falls in, `precision` characters long (6 by default). */
11
+ export declare function geohashEncode(point: GeoPoint, precision?: number): string;
12
+ /** The centre of a cell, or null when the string is not a geohash. */
13
+ export declare function geohashCentre(hash: string): GeoPoint | null;
14
+ /**
15
+ * The cells to look in for everything within `reachM` of a point: the cell
16
+ * the point falls in and its eight neighbours, at the finest precision (up to
17
+ * `maxPrecision`) whose cells are wider and taller than the reach there. A
18
+ * point within reach can then never fall outside the block, however near an
19
+ * edge of its own cell the point sits. Any cell of `maxPrecision` characters
20
+ * or fewer that holds such a point starts with one of the returned cells.
21
+ *
22
+ * A reach over a pole needs every longitude: the 32 one-character cells.
23
+ */
24
+ export declare function geohashesAround(point: GeoPoint, reachM: number, maxPrecision?: number): string[];
25
+ //# sourceMappingURL=geohash.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"geohash.d.ts","sourceRoot":"","sources":["../../../src/geo/geohash.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAIzC,6EAA6E;AAC7E,wBAAgB,aAAa,CAAC,KAAK,EAAE,QAAQ,EAAE,SAAS,SAAI,GAAG,MAAM,CA0BpE;AAqBD,sEAAsE;AACtE,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,GAAG,IAAI,CAG3D;AAMD;;;;;;;;;GASG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,SAAI,GAAG,MAAM,EAAE,CA2B3F"}