@meshline/sdk 0.0.0-stage → 0.1.0-alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (338) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +43 -2
  3. package/dist/channels/repository.d.ts +73 -0
  4. package/dist/channels/repository.d.ts.map +1 -0
  5. package/dist/channels/repository.js +367 -0
  6. package/dist/channels/repository.js.map +1 -0
  7. package/dist/client/account-operations.d.ts +41 -0
  8. package/dist/client/account-operations.d.ts.map +1 -0
  9. package/dist/client/account-operations.js +304 -0
  10. package/dist/client/account-operations.js.map +1 -0
  11. package/dist/client/conversations.d.ts +36 -0
  12. package/dist/client/conversations.d.ts.map +1 -0
  13. package/dist/client/conversations.js +144 -0
  14. package/dist/client/conversations.js.map +1 -0
  15. package/dist/client.d.ts +53 -0
  16. package/dist/client.d.ts.map +1 -0
  17. package/dist/client.js +162 -0
  18. package/dist/client.js.map +1 -0
  19. package/dist/components/account.d.ts +38 -0
  20. package/dist/components/account.d.ts.map +1 -0
  21. package/dist/components/account.js +243 -0
  22. package/dist/components/account.js.map +1 -0
  23. package/dist/components/channel.d.ts +78 -0
  24. package/dist/components/channel.d.ts.map +1 -0
  25. package/dist/components/channel.js +475 -0
  26. package/dist/components/channel.js.map +1 -0
  27. package/dist/components/component.d.ts +49 -0
  28. package/dist/components/component.d.ts.map +1 -0
  29. package/dist/components/component.js +194 -0
  30. package/dist/components/component.js.map +1 -0
  31. package/dist/components/device.d.ts +60 -0
  32. package/dist/components/device.d.ts.map +1 -0
  33. package/dist/components/device.js +648 -0
  34. package/dist/components/device.js.map +1 -0
  35. package/dist/components/group.d.ts +141 -0
  36. package/dist/components/group.d.ts.map +1 -0
  37. package/dist/components/group.js +933 -0
  38. package/dist/components/group.js.map +1 -0
  39. package/dist/components/message.d.ts +63 -0
  40. package/dist/components/message.d.ts.map +1 -0
  41. package/dist/components/message.js +439 -0
  42. package/dist/components/message.js.map +1 -0
  43. package/dist/components/profile.d.ts +37 -0
  44. package/dist/components/profile.d.ts.map +1 -0
  45. package/dist/components/profile.js +232 -0
  46. package/dist/components/profile.js.map +1 -0
  47. package/dist/crypto/groups.d.ts +56 -0
  48. package/dist/crypto/groups.d.ts.map +1 -0
  49. package/dist/crypto/groups.js +163 -0
  50. package/dist/crypto/groups.js.map +1 -0
  51. package/dist/crypto/messages.d.ts +52 -0
  52. package/dist/crypto/messages.d.ts.map +1 -0
  53. package/dist/crypto/messages.js +180 -0
  54. package/dist/crypto/messages.js.map +1 -0
  55. package/dist/crypto/primitives.d.ts +30 -0
  56. package/dist/crypto/primitives.d.ts.map +1 -0
  57. package/dist/crypto/primitives.js +102 -0
  58. package/dist/crypto/primitives.js.map +1 -0
  59. package/dist/errors.d.ts +11 -0
  60. package/dist/errors.d.ts.map +1 -0
  61. package/dist/errors.js +14 -0
  62. package/dist/errors.js.map +1 -0
  63. package/dist/groups/account-sync.d.ts +28 -0
  64. package/dist/groups/account-sync.d.ts.map +1 -0
  65. package/dist/groups/account-sync.js +235 -0
  66. package/dist/groups/account-sync.js.map +1 -0
  67. package/dist/groups/messages.d.ts +39 -0
  68. package/dist/groups/messages.d.ts.map +1 -0
  69. package/dist/groups/messages.js +141 -0
  70. package/dist/groups/messages.js.map +1 -0
  71. package/dist/groups/operations.d.ts +57 -0
  72. package/dist/groups/operations.d.ts.map +1 -0
  73. package/dist/groups/operations.js +225 -0
  74. package/dist/groups/operations.js.map +1 -0
  75. package/dist/groups/repository.d.ts +56 -0
  76. package/dist/groups/repository.d.ts.map +1 -0
  77. package/dist/groups/repository.js +254 -0
  78. package/dist/groups/repository.js.map +1 -0
  79. package/dist/groups/secrets.d.ts +67 -0
  80. package/dist/groups/secrets.d.ts.map +1 -0
  81. package/dist/groups/secrets.js +452 -0
  82. package/dist/groups/secrets.js.map +1 -0
  83. package/dist/groups/state.d.ts +39 -0
  84. package/dist/groups/state.d.ts.map +1 -0
  85. package/dist/groups/state.js +201 -0
  86. package/dist/groups/state.js.map +1 -0
  87. package/dist/identity/identifiers.d.ts +9 -0
  88. package/dist/identity/identifiers.d.ts.map +1 -0
  89. package/dist/identity/identifiers.js +37 -0
  90. package/dist/identity/identifiers.js.map +1 -0
  91. package/dist/identity/neo.d.ts +11 -0
  92. package/dist/identity/neo.d.ts.map +1 -0
  93. package/dist/identity/neo.js +77 -0
  94. package/dist/identity/neo.js.map +1 -0
  95. package/dist/index.d.ts +53 -0
  96. package/dist/index.d.ts.map +1 -0
  97. package/dist/index.js +46 -0
  98. package/dist/index.js.map +1 -0
  99. package/dist/interactions.d.ts +31 -0
  100. package/dist/interactions.d.ts.map +1 -0
  101. package/dist/interactions.js +2 -0
  102. package/dist/interactions.js.map +1 -0
  103. package/dist/messages/account-sender.d.ts +9 -0
  104. package/dist/messages/account-sender.d.ts.map +1 -0
  105. package/dist/messages/account-sender.js +46 -0
  106. package/dist/messages/account-sender.js.map +1 -0
  107. package/dist/messages/contacts.d.ts +103 -0
  108. package/dist/messages/contacts.d.ts.map +1 -0
  109. package/dist/messages/contacts.js +525 -0
  110. package/dist/messages/contacts.js.map +1 -0
  111. package/dist/messages/outbox.d.ts +66 -0
  112. package/dist/messages/outbox.d.ts.map +1 -0
  113. package/dist/messages/outbox.js +167 -0
  114. package/dist/messages/outbox.js.map +1 -0
  115. package/dist/messages/receiver.d.ts +35 -0
  116. package/dist/messages/receiver.d.ts.map +1 -0
  117. package/dist/messages/receiver.js +113 -0
  118. package/dist/messages/receiver.js.map +1 -0
  119. package/dist/messages/repository.d.ts +89 -0
  120. package/dist/messages/repository.d.ts.map +1 -0
  121. package/dist/messages/repository.js +295 -0
  122. package/dist/messages/repository.js.map +1 -0
  123. package/dist/models/authentication.d.ts +37 -0
  124. package/dist/models/authentication.d.ts.map +1 -0
  125. package/dist/models/authentication.js +53 -0
  126. package/dist/models/authentication.js.map +1 -0
  127. package/dist/models/channels.d.ts +141 -0
  128. package/dist/models/channels.d.ts.map +1 -0
  129. package/dist/models/channels.js +258 -0
  130. package/dist/models/channels.js.map +1 -0
  131. package/dist/models/contacts.d.ts +68 -0
  132. package/dist/models/contacts.d.ts.map +1 -0
  133. package/dist/models/contacts.js +186 -0
  134. package/dist/models/contacts.js.map +1 -0
  135. package/dist/models/content.d.ts +37 -0
  136. package/dist/models/content.d.ts.map +1 -0
  137. package/dist/models/content.js +137 -0
  138. package/dist/models/content.js.map +1 -0
  139. package/dist/models/device-state.d.ts +8 -0
  140. package/dist/models/device-state.d.ts.map +1 -0
  141. package/dist/models/device-state.js +22 -0
  142. package/dist/models/device-state.js.map +1 -0
  143. package/dist/models/group-admission.d.ts +111 -0
  144. package/dist/models/group-admission.d.ts.map +1 -0
  145. package/dist/models/group-admission.js +153 -0
  146. package/dist/models/group-admission.js.map +1 -0
  147. package/dist/models/group-keys.d.ts +30 -0
  148. package/dist/models/group-keys.d.ts.map +1 -0
  149. package/dist/models/group-keys.js +52 -0
  150. package/dist/models/group-keys.js.map +1 -0
  151. package/dist/models/group-management.d.ts +190 -0
  152. package/dist/models/group-management.d.ts.map +1 -0
  153. package/dist/models/group-management.js +263 -0
  154. package/dist/models/group-management.js.map +1 -0
  155. package/dist/models/groups.d.ts +81 -0
  156. package/dist/models/groups.d.ts.map +1 -0
  157. package/dist/models/groups.js +127 -0
  158. package/dist/models/groups.js.map +1 -0
  159. package/dist/models/identity.d.ts +47 -0
  160. package/dist/models/identity.d.ts.map +1 -0
  161. package/dist/models/identity.js +136 -0
  162. package/dist/models/identity.js.map +1 -0
  163. package/dist/models/messages.d.ts +104 -0
  164. package/dist/models/messages.d.ts.map +1 -0
  165. package/dist/models/messages.js +168 -0
  166. package/dist/models/messages.js.map +1 -0
  167. package/dist/models/profile.d.ts +24 -0
  168. package/dist/models/profile.d.ts.map +1 -0
  169. package/dist/models/profile.js +47 -0
  170. package/dist/models/profile.js.map +1 -0
  171. package/dist/models/relay.d.ts +39 -0
  172. package/dist/models/relay.d.ts.map +1 -0
  173. package/dist/models/relay.js +160 -0
  174. package/dist/models/relay.js.map +1 -0
  175. package/dist/protocol/codec.d.ts +36 -0
  176. package/dist/protocol/codec.d.ts.map +1 -0
  177. package/dist/protocol/codec.js +144 -0
  178. package/dist/protocol/codec.js.map +1 -0
  179. package/dist/protocol/context.d.ts +14 -0
  180. package/dist/protocol/context.d.ts.map +1 -0
  181. package/dist/protocol/context.js +43 -0
  182. package/dist/protocol/context.js.map +1 -0
  183. package/dist/protocol/encoding.d.ts +15 -0
  184. package/dist/protocol/encoding.d.ts.map +1 -0
  185. package/dist/protocol/encoding.js +133 -0
  186. package/dist/protocol/encoding.js.map +1 -0
  187. package/dist/protocol/json.d.ts +16 -0
  188. package/dist/protocol/json.d.ts.map +1 -0
  189. package/dist/protocol/json.js +172 -0
  190. package/dist/protocol/json.js.map +1 -0
  191. package/dist/protocol/validation.d.ts +4 -0
  192. package/dist/protocol/validation.d.ts.map +1 -0
  193. package/dist/protocol/validation.js +18 -0
  194. package/dist/protocol/validation.js.map +1 -0
  195. package/dist/runtime/abort.d.ts +6 -0
  196. package/dist/runtime/abort.d.ts.map +1 -0
  197. package/dist/runtime/abort.js +32 -0
  198. package/dist/runtime/abort.js.map +1 -0
  199. package/dist/runtime/async-gate.d.ts +6 -0
  200. package/dist/runtime/async-gate.d.ts.map +1 -0
  201. package/dist/runtime/async-gate.js +15 -0
  202. package/dist/runtime/async-gate.js.map +1 -0
  203. package/dist/runtime/async-pulse.d.ts +7 -0
  204. package/dist/runtime/async-pulse.d.ts.map +1 -0
  205. package/dist/runtime/async-pulse.js +23 -0
  206. package/dist/runtime/async-pulse.js.map +1 -0
  207. package/dist/runtime/clock.d.ts +16 -0
  208. package/dist/runtime/clock.d.ts.map +1 -0
  209. package/dist/runtime/clock.js +62 -0
  210. package/dist/runtime/clock.js.map +1 -0
  211. package/dist/runtime/events.d.ts +11 -0
  212. package/dist/runtime/events.d.ts.map +1 -0
  213. package/dist/runtime/events.js +45 -0
  214. package/dist/runtime/events.js.map +1 -0
  215. package/dist/runtime/url.d.ts +3 -0
  216. package/dist/runtime/url.d.ts.map +1 -0
  217. package/dist/runtime/url.js +23 -0
  218. package/dist/runtime/url.js.map +1 -0
  219. package/dist/storage/signed-request.d.ts +14 -0
  220. package/dist/storage/signed-request.d.ts.map +1 -0
  221. package/dist/storage/signed-request.js +26 -0
  222. package/dist/storage/signed-request.js.map +1 -0
  223. package/dist/storage/store.d.ts +58 -0
  224. package/dist/storage/store.d.ts.map +1 -0
  225. package/dist/storage/store.js +52 -0
  226. package/dist/storage/store.js.map +1 -0
  227. package/dist/storage/transaction.d.ts +7 -0
  228. package/dist/storage/transaction.d.ts.map +1 -0
  229. package/dist/storage/transaction.js +22 -0
  230. package/dist/storage/transaction.js.map +1 -0
  231. package/dist/transport/client.d.ts +61 -0
  232. package/dist/transport/client.d.ts.map +1 -0
  233. package/dist/transport/client.js +392 -0
  234. package/dist/transport/client.js.map +1 -0
  235. package/dist/transport/discovery.d.ts +19 -0
  236. package/dist/transport/discovery.d.ts.map +1 -0
  237. package/dist/transport/discovery.js +75 -0
  238. package/dist/transport/discovery.js.map +1 -0
  239. package/dist/transport/endpoint.d.ts +6 -0
  240. package/dist/transport/endpoint.d.ts.map +1 -0
  241. package/dist/transport/endpoint.js +35 -0
  242. package/dist/transport/endpoint.js.map +1 -0
  243. package/dist/transport/http.d.ts +52 -0
  244. package/dist/transport/http.d.ts.map +1 -0
  245. package/dist/transport/http.js +128 -0
  246. package/dist/transport/http.js.map +1 -0
  247. package/dist/transport/pool.d.ts +31 -0
  248. package/dist/transport/pool.d.ts.map +1 -0
  249. package/dist/transport/pool.js +137 -0
  250. package/dist/transport/pool.js.map +1 -0
  251. package/dist/transport/relay-error.d.ts +23 -0
  252. package/dist/transport/relay-error.d.ts.map +1 -0
  253. package/dist/transport/relay-error.js +47 -0
  254. package/dist/transport/relay-error.js.map +1 -0
  255. package/dist/transport/rpc.d.ts +31 -0
  256. package/dist/transport/rpc.d.ts.map +1 -0
  257. package/dist/transport/rpc.js +56 -0
  258. package/dist/transport/rpc.js.map +1 -0
  259. package/dist/transport/session.d.ts +49 -0
  260. package/dist/transport/session.d.ts.map +1 -0
  261. package/dist/transport/session.js +169 -0
  262. package/dist/transport/session.js.map +1 -0
  263. package/dist/transport/socket.d.ts +55 -0
  264. package/dist/transport/socket.d.ts.map +1 -0
  265. package/dist/transport/socket.js +266 -0
  266. package/dist/transport/socket.js.map +1 -0
  267. package/dist/transport/subscription.d.ts +36 -0
  268. package/dist/transport/subscription.d.ts.map +1 -0
  269. package/dist/transport/subscription.js +169 -0
  270. package/dist/transport/subscription.js.map +1 -0
  271. package/package.json +35 -4
  272. package/src/channels/repository.ts +244 -0
  273. package/src/client/account-operations.ts +183 -0
  274. package/src/client/conversations.ts +95 -0
  275. package/src/client.ts +108 -0
  276. package/src/components/account.ts +206 -0
  277. package/src/components/channel.ts +253 -0
  278. package/src/components/component.ts +151 -0
  279. package/src/components/device.ts +455 -0
  280. package/src/components/group.ts +546 -0
  281. package/src/components/message.ts +253 -0
  282. package/src/components/profile.ts +179 -0
  283. package/src/crypto/groups.ts +107 -0
  284. package/src/crypto/messages.ts +129 -0
  285. package/src/crypto/primitives.ts +103 -0
  286. package/src/errors.ts +13 -0
  287. package/src/groups/account-sync.ts +144 -0
  288. package/src/groups/messages.ts +89 -0
  289. package/src/groups/operations.ts +145 -0
  290. package/src/groups/repository.ts +161 -0
  291. package/src/groups/secrets.ts +256 -0
  292. package/src/groups/state.ts +138 -0
  293. package/src/identity/identifiers.ts +41 -0
  294. package/src/identity/neo.ts +72 -0
  295. package/src/index.ts +52 -0
  296. package/src/interactions.ts +35 -0
  297. package/src/messages/account-sender.ts +33 -0
  298. package/src/messages/contacts.ts +379 -0
  299. package/src/messages/outbox.ts +152 -0
  300. package/src/messages/receiver.ts +86 -0
  301. package/src/messages/repository.ts +230 -0
  302. package/src/models/authentication.ts +63 -0
  303. package/src/models/channels.ts +155 -0
  304. package/src/models/contacts.ts +141 -0
  305. package/src/models/content.ts +105 -0
  306. package/src/models/device-state.ts +18 -0
  307. package/src/models/group-admission.ts +110 -0
  308. package/src/models/group-keys.ts +34 -0
  309. package/src/models/group-management.ts +182 -0
  310. package/src/models/groups.ts +100 -0
  311. package/src/models/identity.ts +164 -0
  312. package/src/models/messages.ts +139 -0
  313. package/src/models/profile.ts +46 -0
  314. package/src/models/relay.ts +151 -0
  315. package/src/protocol/codec.ts +144 -0
  316. package/src/protocol/context.ts +39 -0
  317. package/src/protocol/encoding.ts +106 -0
  318. package/src/protocol/json.ts +140 -0
  319. package/src/protocol/validation.ts +13 -0
  320. package/src/runtime/abort.ts +27 -0
  321. package/src/runtime/async-gate.ts +16 -0
  322. package/src/runtime/async-pulse.ts +20 -0
  323. package/src/runtime/clock.ts +63 -0
  324. package/src/runtime/events.ts +31 -0
  325. package/src/runtime/url.ts +17 -0
  326. package/src/storage/signed-request.ts +26 -0
  327. package/src/storage/store.ts +90 -0
  328. package/src/storage/transaction.ts +17 -0
  329. package/src/transport/client.ts +328 -0
  330. package/src/transport/discovery.ts +64 -0
  331. package/src/transport/endpoint.ts +32 -0
  332. package/src/transport/http.ts +129 -0
  333. package/src/transport/pool.ts +115 -0
  334. package/src/transport/relay-error.ts +46 -0
  335. package/src/transport/rpc.ts +56 -0
  336. package/src/transport/session.ts +154 -0
  337. package/src/transport/socket.ts +248 -0
  338. package/src/transport/subscription.ts +117 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"repository.d.ts","sourceRoot":"","sources":["../../src/messages/repository.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,295 @@
1
+ import { ProtocolError, StateConflictError } from '../errors.js';
2
+ import { validateIdentifier } from '../identity/identifiers.js';
3
+ import { validateAccountId, validateRelayId } from '../identity/neo.js';
4
+ import { directMessageCodec, messagePayloadCodec, validateDirectMessage } from '../models/messages.js';
5
+ import { decodeBase64Url, encodeBase64Url } from '../protocol/encoding.js';
6
+ import { canonicalBytes, canonicalJson, parseJson, requireObject, requireSafeInteger } from '../protocol/json.js';
7
+ import { throwIfAborted } from '../runtime/clock.js';
8
+ import { requireBatchCount } from '../storage/store.js';
9
+ import { updateStore } from '../storage/transaction.js';
10
+ import { encodeOutbox, outboxKey } from './outbox.js';
11
+ export const messageKey = (value) => {
12
+ validateAccountId(value.sender);
13
+ validateIdentifier('message', value.messageId);
14
+ return { collection: 'messages', key: `${value.sender}|${value.messageId}` };
15
+ };
16
+ export const timelineKey = (relayId) => { validateRelayId(relayId); return { collection: 'message_timelines', key: relayId }; };
17
+ const sequenceKey = { collection: 'message_meta', key: 'local_sequence' };
18
+ const secretTypes = new Set(['meshline.account.group.state.sync', 'meshline.account.group.history_secret.sync']);
19
+ const fingerprint = (value) => canonicalJson(value ?? null);
20
+ function progress(value) {
21
+ if (!value)
22
+ return { sequence: -1, hasRetentionGap: false };
23
+ requireSafeInteger(value.sequence, -1);
24
+ if (typeof value.hasRetentionGap !== 'boolean')
25
+ throw new ProtocolError('invalid_storage', 'Invalid persisted timeline retention flag.');
26
+ if (value.lastSynchronizedAt !== undefined)
27
+ requireSafeInteger(value.lastSynchronizedAt, 0);
28
+ return { sequence: value.sequence, hasRetentionGap: value.hasRetentionGap, ...(value.lastSynchronizedAt === undefined ? {} : { lastSynchronizedAt: value.lastSynchronizedAt }) };
29
+ }
30
+ function encodeMessage(value) {
31
+ return { sender: value.sender, messageId: value.messageId, senderDeviceId: value.senderDeviceId, recipient: value.recipient, createdAt: value.createdAt,
32
+ payloadType: value.payloadType, localSequence: value.localSequence, ...(value.payload === undefined ? {} : { payload: value.payload }),
33
+ ...(value.protectedPayload === undefined ? {} : { protectedPayload: value.protectedPayload }) };
34
+ }
35
+ function decodeMessage(row) {
36
+ const value = row.value;
37
+ for (const name of ['sender', 'messageId', 'senderDeviceId', 'recipient', 'payloadType'])
38
+ if (typeof value[name] !== 'string')
39
+ throw new ProtocolError('invalid_storage', `Stored message has no ${name}.`);
40
+ const key = { sender: value.sender, messageId: value.messageId };
41
+ if (messageKey(key).key !== row.key)
42
+ throw new ProtocolError('invalid_storage', 'Stored message identity differs from its key.');
43
+ validateAccountId(value.recipient);
44
+ validateIdentifier('device', value.senderDeviceId);
45
+ requireSafeInteger(value.createdAt, 0);
46
+ requireSafeInteger(value.localSequence, 1);
47
+ const secret = secretTypes.has(value.payloadType);
48
+ if (secret ? value.payload !== undefined || typeof value.protectedPayload !== 'string' : value.protectedPayload !== undefined || value.payload === undefined)
49
+ throw new ProtocolError('invalid_storage', 'Message payload protection differs from its declared type.');
50
+ const payload = secret ? undefined : messagePayloadCodec.decode(value.payload);
51
+ if (payload && payload['$type'] !== value.payloadType)
52
+ throw new ProtocolError('invalid_storage', 'Stored message type differs from its payload.');
53
+ if (secret && decodeBase64Url(value.protectedPayload).length === 0)
54
+ throw new ProtocolError('invalid_storage', 'Protected payload cannot be empty.');
55
+ return { ...key, senderDeviceId: value.senderDeviceId, recipient: value.recipient, createdAt: value.createdAt, payloadType: value.payloadType,
56
+ localSequence: value.localSequence, ...(payload ? { payload } : { protectedPayload: value.protectedPayload }) };
57
+ }
58
+ /** Internal persistence; callers must verify envelope signatures, decryption and business authorization before preparing an incoming record. */
59
+ export class MessageRepository {
60
+ options;
61
+ constructor(options) {
62
+ this.options = options;
63
+ }
64
+ #belongsToAccount(value) {
65
+ if (value.sender !== this.options.accountId && value.recipient !== this.options.accountId)
66
+ throw new ProtocolError('invalid_identity', 'Message does not belong to this account.');
67
+ }
68
+ #purpose(value) {
69
+ const deviceId = this.options.deviceId();
70
+ validateIdentifier('device', deviceId);
71
+ return `Meshline/${this.options.context}/${this.options.accountId}/${deviceId}/messages/${value.sender}/${value.messageId}`;
72
+ }
73
+ async prepare(envelope, source, signal) {
74
+ throwIfAborted(signal);
75
+ const payload = messagePayloadCodec.decode(source);
76
+ const type = payload['$type'];
77
+ if (type === 'meshline.message.direct')
78
+ validateDirectMessage(directMessageCodec.decode(payload));
79
+ const value = { sender: envelope.from, messageId: envelope.messageId, senderDeviceId: envelope.fromDeviceId, recipient: envelope.to, createdAt: envelope.createdAt, payloadType: type };
80
+ messageKey(value);
81
+ this.#belongsToAccount(value);
82
+ validateIdentifier('device', value.senderDeviceId);
83
+ requireSafeInteger(value.createdAt, 0);
84
+ if (!secretTypes.has(type))
85
+ return { ...value, payload };
86
+ const protector = this.options.secretProtector;
87
+ if (!protector)
88
+ throw new ProtocolError('protector_required', 'A secret protector is required to store group synchronization secrets.');
89
+ const plaintext = canonicalBytes(payload);
90
+ try {
91
+ const protectedData = await protector.protect(plaintext, this.#purpose(value), signal);
92
+ throwIfAborted(signal);
93
+ if (!(protectedData instanceof Uint8Array) || !protectedData.length)
94
+ throw new ProtocolError('invalid_protection', 'Secret protector returned no protected payload.');
95
+ return { ...value, protectedPayload: encodeBase64Url(protectedData) };
96
+ }
97
+ finally {
98
+ plaintext.fill(0);
99
+ }
100
+ }
101
+ async #payload(value, signal) {
102
+ this.#belongsToAccount(value);
103
+ throwIfAborted(signal);
104
+ if (value.payload)
105
+ return messagePayloadCodec.decode(value.payload);
106
+ const protector = this.options.secretProtector;
107
+ if (!protector)
108
+ throw new ProtocolError('protector_required', 'A secret protector is required to read group synchronization secrets.');
109
+ const plaintext = await protector.unprotect(decodeBase64Url(value.protectedPayload), this.#purpose(value), signal);
110
+ try {
111
+ throwIfAborted(signal);
112
+ const payload = messagePayloadCodec.decode(parseJson(plaintext));
113
+ if (payload['$type'] !== value.payloadType)
114
+ throw new ProtocolError('invalid_storage', 'Unprotected payload type differs from the stored type.');
115
+ return payload;
116
+ }
117
+ finally {
118
+ plaintext.fill(0);
119
+ }
120
+ }
121
+ async get(key, signal) {
122
+ const row = (await this.options.store.read([messageKey(key)], signal)).sets[0][0];
123
+ if (!row)
124
+ return undefined;
125
+ const value = decodeMessage(row);
126
+ this.#belongsToAccount(value);
127
+ if (value.payloadType !== 'meshline.message.direct')
128
+ return undefined;
129
+ return this.#info(value);
130
+ }
131
+ async contains(key, signal) {
132
+ const row = (await this.options.store.read([messageKey(key)], signal)).sets[0][0];
133
+ if (!row)
134
+ return false;
135
+ this.#belongsToAccount(decodeMessage(row));
136
+ return true;
137
+ }
138
+ /** A previously committed message can advance another relay's cursor without needing historical decryption keys again. */
139
+ async acceptKnown(relayId, entry, hasRetentionGap, signal) {
140
+ const key = timelineKey(relayId);
141
+ requireSafeInteger(entry.sequence, 0);
142
+ requireSafeInteger(entry.acceptedAt, 0);
143
+ const now = this.options.clock.nowSeconds();
144
+ requireSafeInteger(now, 0);
145
+ return updateStore(this.options.store, [key, messageKey({ sender: entry.envelope.from, messageId: entry.envelope.messageId })], snapshot => {
146
+ const known = snapshot.sets[1][0];
147
+ if (!known)
148
+ return { mutations: [], result: false };
149
+ this.#belongsToAccount(decodeMessage(known));
150
+ const current = progress(snapshot.sets[0][0]?.value);
151
+ return { mutations: current.sequence >= entry.sequence ? [] : [{ kind: 'put', ...key, value: { sequence: entry.sequence, hasRetentionGap: current.hasRetentionGap || hasRetentionGap, lastSynchronizedAt: now } }], result: true };
152
+ }, signal);
153
+ }
154
+ #info(value) {
155
+ this.#belongsToAccount(value);
156
+ const direct = directMessageCodec.decode(value.payload);
157
+ validateDirectMessage(direct);
158
+ return { ...direct, key: { sender: value.sender, messageId: value.messageId }, senderDeviceId: value.senderDeviceId, recipient: value.recipient, createdAt: value.createdAt };
159
+ }
160
+ async history(peer, signal) {
161
+ if (peer !== undefined)
162
+ validateAccountId(peer);
163
+ const snapshot = await this.options.store.read([{ collection: 'messages' }], signal);
164
+ const records = snapshot.sets[0].map(decodeMessage).filter(value => value.payloadType === 'meshline.message.direct' && (peer === undefined
165
+ || value.sender === this.options.accountId && value.recipient === peer || value.sender === peer && value.recipient === this.options.accountId))
166
+ .sort((a, b) => a.createdAt - b.createdAt || compare(a.messageId, b.messageId) || compare(a.sender, b.sender));
167
+ return snapshotReader(records.map(value => this.#info(value)));
168
+ }
169
+ async readTimeline(after, count, signal) {
170
+ requireSafeInteger(after, 0);
171
+ requireBatchCount(count);
172
+ const snapshot = await this.options.store.read([{ collection: 'messages' }], signal);
173
+ const records = snapshot.sets[0].map(decodeMessage).filter(value => value.localSequence > after).sort((a, b) => a.localSequence - b.localSequence).slice(0, count);
174
+ const results = [];
175
+ for (const value of records)
176
+ results.push({ localSequence: value.localSequence, sender: value.sender, senderDeviceId: value.senderDeviceId, recipient: value.recipient,
177
+ messageId: value.messageId, payload: await this.#payload(value, signal) });
178
+ return results;
179
+ }
180
+ async getProgress(relayId, signal) {
181
+ return progress((await this.options.store.read([timelineKey(relayId)], signal)).sets[0][0]?.value);
182
+ }
183
+ async observeRelay(relayId, signal) {
184
+ const key = timelineKey(relayId);
185
+ await updateStore(this.options.store, [key], snapshot => ({ mutations: snapshot.sets[0].length ? [] : [{ kind: 'put', ...key, value: { sequence: -1, hasRetentionGap: false } }], result: undefined }), signal);
186
+ }
187
+ /** The caller provides state fingerprints captured before signing; unrelated store writes may be retried without signing again. */
188
+ async enqueue(outbox, message, guards, effects, signal) {
189
+ const envelope = outbox.request.envelope;
190
+ const key = outboxKey(envelope.messageId);
191
+ if (envelope.from !== this.options.accountId || outbox.state !== 'queued' || outbox.acceptedAt !== undefined)
192
+ throw new ProtocolError('invalid_outbox', 'Only new local queued messages may be enqueued.');
193
+ if (outbox.isDirect !== Boolean(message) || message && message.payloadType !== 'meshline.message.direct')
194
+ throw new ProtocolError('invalid_outbox', 'Only direct outgoing messages are inserted into local history at enqueue time.');
195
+ if (message && !matchesEnvelope(message, envelope))
196
+ throw new ProtocolError('invalid_outbox', 'Local message identity differs from the outgoing envelope.');
197
+ const queries = [key, messageKey({ sender: envelope.from, messageId: envelope.messageId }), sequenceKey, ...guards.map(value => value.query), ...effects?.queries ?? []];
198
+ const document = encodeOutbox(outbox);
199
+ const committed = await updateStore(this.options.store, queries, snapshot => {
200
+ if (snapshot.sets[0].length || snapshot.sets[1].length)
201
+ throw new StateConflictError('Outgoing message ID already exists.');
202
+ guards.forEach((guard, index) => { if (fingerprint(snapshot.sets[index + 3][0]?.value) !== fingerprint(guard.value))
203
+ throw new StateConflictError('Message authorization changed while preparing the encrypted request.'); });
204
+ const mutations = [{ kind: 'put', ...key, value: document }];
205
+ if (message)
206
+ mutations.push(...insertMessage(message, snapshot.sets[2][0]?.value));
207
+ const effectSnapshot = { ...snapshot, sets: snapshot.sets.slice(3 + guards.length) };
208
+ const effectMutations = effects?.plan(effectSnapshot) ?? [];
209
+ mutations.push(...effectMutations);
210
+ return { mutations, result: { snapshot: effectSnapshot, mutations: effectMutations } };
211
+ }, signal);
212
+ effects?.committed?.(committed.snapshot, committed.mutations);
213
+ }
214
+ async accept(relayId, entry, message, hasRetentionGap, effects, signal) {
215
+ if (!matchesEnvelope(message, entry.envelope))
216
+ throw new ProtocolError('invalid_message', 'Prepared message identity differs from the timeline envelope.');
217
+ this.#belongsToAccount(message);
218
+ requireSafeInteger(entry.sequence, 0);
219
+ requireSafeInteger(entry.acceptedAt, 0);
220
+ const key = timelineKey(relayId);
221
+ const now = this.options.clock.nowSeconds();
222
+ requireSafeInteger(now, 0);
223
+ const result = await updateStore(this.options.store, [key, messageKey(message), sequenceKey, ...effects?.queries ?? []], snapshot => {
224
+ const current = progress(snapshot.sets[0][0]?.value);
225
+ if (current.sequence >= entry.sequence)
226
+ return { mutations: [], result: { advanced: false, inserted: false } };
227
+ const inserted = !snapshot.sets[1].length;
228
+ const mutations = [{ kind: 'put', ...key, value: { sequence: entry.sequence, hasRetentionGap: hasRetentionGap || current.hasRetentionGap, lastSynchronizedAt: now } }];
229
+ const effectSnapshot = { ...snapshot, sets: snapshot.sets.slice(3) };
230
+ const effectMutations = inserted ? effects?.plan(effectSnapshot) ?? [] : [];
231
+ if (inserted) {
232
+ mutations.push(...effectMutations);
233
+ mutations.push(...insertMessage(message, snapshot.sets[2][0]?.value));
234
+ }
235
+ return { mutations, result: { advanced: true, inserted, snapshot: effectSnapshot, mutations: effectMutations } };
236
+ }, signal);
237
+ if (result.inserted)
238
+ effects?.committed?.(result.snapshot, result.mutations);
239
+ return { advanced: result.advanced, inserted: result.inserted };
240
+ }
241
+ /** Rejected authenticated entries advance only when the receiver classifies the error as permanent protocol rejection. */
242
+ async reject(relayId, sequence, error, hasRetentionGap, signal) {
243
+ requireSafeInteger(sequence, 0);
244
+ const key = timelineKey(relayId);
245
+ const now = this.options.clock.nowSeconds();
246
+ requireSafeInteger(now, 0);
247
+ return updateStore(this.options.store, [key], snapshot => {
248
+ const current = progress(snapshot.sets[0][0]?.value);
249
+ if (current.sequence >= sequence)
250
+ return { mutations: [], result: false };
251
+ return { mutations: [
252
+ { kind: 'put', ...key, value: { sequence, hasRetentionGap: hasRetentionGap || current.hasRetentionGap, lastSynchronizedAt: now } },
253
+ { kind: 'put', collection: 'message_rejections', key: `${relayId}|${sequence.toString().padStart(16, '0')}`, value: { relayId, sequence, code: error.code, message: error.message, rejectedAt: now } },
254
+ ], result: true };
255
+ }, signal);
256
+ }
257
+ async acceptEmptyPage(relayId, hasRetentionGap, signal) {
258
+ const key = timelineKey(relayId);
259
+ const now = this.options.clock.nowSeconds();
260
+ requireSafeInteger(now, 0);
261
+ await updateStore(this.options.store, [key], snapshot => {
262
+ const current = progress(snapshot.sets[0][0]?.value);
263
+ return { mutations: [{ kind: 'put', ...key, value: { sequence: current.sequence, hasRetentionGap: current.hasRetentionGap || hasRetentionGap, lastSynchronizedAt: now } }], result: undefined };
264
+ }, signal);
265
+ }
266
+ }
267
+ function insertMessage(value, meta) {
268
+ const previous = meta?.sequence ?? 0;
269
+ requireSafeInteger(previous, 0);
270
+ const sequence = previous + 1;
271
+ requireSafeInteger(sequence, 1);
272
+ return [{ kind: 'put', ...messageKey(value), value: encodeMessage({ ...value, localSequence: sequence }) }, { kind: 'put', ...sequenceKey, value: { sequence } }];
273
+ }
274
+ function matchesEnvelope(value, envelope) {
275
+ return value.sender === envelope.from && value.messageId === envelope.messageId && value.senderDeviceId === envelope.fromDeviceId && value.recipient === envelope.to && value.createdAt === envelope.createdAt;
276
+ }
277
+ function compare(a, b) { return a < b ? -1 : a > b ? 1 : 0; }
278
+ /** Materialized immutable query results; caller mutation of a returned page cannot affect later pages. */
279
+ export function snapshotReader(source) {
280
+ let values = source;
281
+ let offset = 0;
282
+ return {
283
+ async readNext(count, signal) {
284
+ throwIfAborted(signal);
285
+ requireBatchCount(count);
286
+ if (!values)
287
+ throw new ProtocolError('disposed', 'Query reader is disposed.');
288
+ const result = values.slice(offset, offset + count);
289
+ offset += result.length;
290
+ return result;
291
+ },
292
+ async dispose() { values = undefined; },
293
+ };
294
+ }
295
+ //# sourceMappingURL=repository.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"repository.js","sourceRoot":"","sources":["../../src/messages/repository.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,37 @@
1
+ import { type ExtensibleModel } from '../protocol/codec.js';
2
+ import { NetworkContext } from '../protocol/context.js';
3
+ import { type DeviceCertificate } from './identity.js';
4
+ export type SessionMode = 'account' | 'device';
5
+ export interface AuthenticationChallenge extends ExtensibleModel {
6
+ readonly nonce: string;
7
+ readonly createdAt: number;
8
+ readonly expiresAt: number;
9
+ }
10
+ /** The token is a credential: never include this object in diagnostic logs. */
11
+ export interface SessionCredentials extends ExtensibleModel {
12
+ readonly token: string;
13
+ readonly mode: SessionMode;
14
+ readonly expiresAt: number;
15
+ }
16
+ export interface AccountAuthenticationRequest extends ExtensibleModel {
17
+ readonly nonce: string;
18
+ readonly accountPublicKey: Uint8Array;
19
+ readonly accountSignature: Uint8Array;
20
+ }
21
+ export interface DeviceAuthenticationRequest extends ExtensibleModel {
22
+ readonly nonce: string;
23
+ readonly timestamp: number;
24
+ readonly signerCertificate: DeviceCertificate;
25
+ readonly deviceSignature: Uint8Array;
26
+ }
27
+ export declare const authenticationChallengeCodec: import("../protocol/codec.js").ProtocolCodec<AuthenticationChallenge>;
28
+ export declare const sessionCredentialsCodec: import("../protocol/codec.js").ProtocolCodec<SessionCredentials>;
29
+ export declare const accountAuthenticationCodec: import("../protocol/codec.js").ProtocolCodec<AccountAuthenticationRequest>;
30
+ export declare const deviceAuthenticationCodec: import("../protocol/codec.js").ProtocolCodec<DeviceAuthenticationRequest>;
31
+ export declare function validateAuthToken(value: string): void;
32
+ export declare function validateChallenge(challenge: AuthenticationChallenge): void;
33
+ export declare function validateSession(credentials: SessionCredentials): void;
34
+ /** Method-defined projection: request extensions cannot override the trusted target. */
35
+ export declare function accountAuthenticationInput(request: AccountAuthenticationRequest, account: string, relayId: string, endpoint: string, context: NetworkContext): Uint8Array;
36
+ export declare function deviceAuthenticationInput(request: DeviceAuthenticationRequest, relayId: string, endpoint: string, context: NetworkContext): Uint8Array;
37
+ //# sourceMappingURL=authentication.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"authentication.d.ts","sourceRoot":"","sources":["../../src/models/authentication.ts"],"names":[],"mappings":"AACA,OAAO,EAAkD,KAAK,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC5G,OAAO,EAAE,cAAc,EAAgB,MAAM,wBAAwB,CAAC;AAMtE,OAAO,EAAyC,KAAK,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAE9F,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG,QAAQ,CAAC;AAC/C,MAAM,WAAW,uBAAwB,SAAQ,eAAe;IAAG,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;CAAE;AACnJ,+EAA+E;AAC/E,MAAM,WAAW,kBAAmB,SAAQ,eAAe;IAAG,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;CAAE;AAC9I,MAAM,WAAW,4BAA6B,SAAQ,eAAe;IAAG,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,gBAAgB,EAAE,UAAU,CAAC;IAAC,QAAQ,CAAC,gBAAgB,EAAE,UAAU,CAAA;CAAE;AAC9K,MAAM,WAAW,2BAA4B,SAAQ,eAAe;IAAG,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;IAAC,QAAQ,CAAC,eAAe,EAAE,UAAU,CAAA;CAAE;AAEhN,eAAO,MAAM,4BAA4B,uEAEvC,CAAC;AACH,eAAO,MAAM,uBAAuB,kEAElC,CAAC;AACH,eAAO,MAAM,0BAA0B,4EAErC,CAAC;AACH,eAAO,MAAM,yBAAyB,2EAGpC,CAAC;AAEH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAGrD;AAED,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,uBAAuB,GAAG,IAAI,CAM1E;AAED,wBAAgB,eAAe,CAAC,WAAW,EAAE,kBAAkB,GAAG,IAAI,CAKrE;AAED,wFAAwF;AACxF,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,4BAA4B,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,GAAG,UAAU,CAIzK;AAED,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,2BAA2B,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,GAAG,UAAU,CAItJ"}
@@ -0,0 +1,53 @@
1
+ import { ProtocolError } from '../errors.js';
2
+ import { bytes, defineCodec, enumeration, integer, text } from '../protocol/codec.js';
3
+ import { NetworkContext, signingInput } from '../protocol/context.js';
4
+ import { encodeBase64Url } from '../protocol/encoding.js';
5
+ import { requireSafeInteger } from '../protocol/json.js';
6
+ import { validateCompleteObject } from '../protocol/validation.js';
7
+ import { validateRelayId } from '../identity/neo.js';
8
+ import { relayOrigin } from '../transport/endpoint.js';
9
+ import { certificateId, deviceCertificateCodec } from './identity.js';
10
+ export const authenticationChallengeCodec = defineCodec({
11
+ nonce: { wire: 'nonce', codec: text }, createdAt: { wire: 'created_at', codec: integer }, expiresAt: { wire: 'expires_at', codec: integer },
12
+ });
13
+ export const sessionCredentialsCodec = defineCodec({
14
+ token: { wire: 'token', codec: text }, mode: { wire: 'mode', codec: enumeration('account', 'device') }, expiresAt: { wire: 'expires_at', codec: integer },
15
+ });
16
+ export const accountAuthenticationCodec = defineCodec({
17
+ nonce: { wire: 'nonce', codec: text }, accountPublicKey: { wire: 'account_public_key', codec: bytes }, accountSignature: { wire: 'account_signature', codec: bytes },
18
+ });
19
+ export const deviceAuthenticationCodec = defineCodec({
20
+ nonce: { wire: 'nonce', codec: text }, timestamp: { wire: 'timestamp', codec: integer },
21
+ signerCertificate: { wire: 'signer_certificate', codec: deviceCertificateCodec }, deviceSignature: { wire: 'device_signature', codec: bytes },
22
+ });
23
+ export function validateAuthToken(value) {
24
+ if (typeof value !== 'string' || value.length < 1 || value.length > 256 || /[^\x21-\x7e]/.test(value))
25
+ throw new ProtocolError('invalid_auth_token', 'Authentication tokens must contain 1 to 256 visible ASCII characters.');
26
+ }
27
+ export function validateChallenge(challenge) {
28
+ validateCompleteObject(authenticationChallengeCodec.encode(challenge));
29
+ validateAuthToken(challenge.nonce);
30
+ requireSafeInteger(challenge.createdAt, 0);
31
+ requireSafeInteger(challenge.expiresAt, 0);
32
+ if (challenge.expiresAt <= challenge.createdAt)
33
+ throw new ProtocolError('invalid_time', 'Challenge expiry must follow its creation time.');
34
+ }
35
+ export function validateSession(credentials) {
36
+ validateCompleteObject(sessionCredentialsCodec.encode(credentials));
37
+ validateAuthToken(credentials.token);
38
+ requireSafeInteger(credentials.expiresAt, 1);
39
+ if (credentials.mode !== 'account' && credentials.mode !== 'device')
40
+ throw new ProtocolError('invalid_mode', 'Invalid session mode.');
41
+ }
42
+ /** Method-defined projection: request extensions cannot override the trusted target. */
43
+ export function accountAuthenticationInput(request, account, relayId, endpoint, context) {
44
+ validateRelayId(relayId);
45
+ return signingInput({ $type: 'meshline.relay.account_auth', relay_id: relayId, origin: relayOrigin(endpoint),
46
+ account, account_public_key: encodeBase64Url(request.accountPublicKey), nonce: request.nonce }, context, []);
47
+ }
48
+ export function deviceAuthenticationInput(request, relayId, endpoint, context) {
49
+ validateRelayId(relayId);
50
+ return signingInput({ $type: 'meshline.relay.auth', relay_id: relayId, origin: relayOrigin(endpoint), account: request.signerCertificate.account,
51
+ device_id: certificateId(request.signerCertificate, context), nonce: request.nonce, timestamp: request.timestamp }, context, []);
52
+ }
53
+ //# sourceMappingURL=authentication.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"authentication.js","sourceRoot":"","sources":["../../src/models/authentication.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,141 @@
1
+ import { type ExtensibleModel, type ValueCodec } from '../protocol/codec.js';
2
+ import { type NetworkContext } from '../protocol/context.js';
3
+ import { type ContentReference, type MessageBody } from './content.js';
4
+ import { type DeviceCertificate } from './identity.js';
5
+ export interface ChannelRef {
6
+ readonly channelId: string;
7
+ readonly relayId: string;
8
+ }
9
+ export interface ChannelPostRef {
10
+ readonly channel: ChannelRef;
11
+ readonly sequence: number;
12
+ }
13
+ export declare function validateChannelRef(value: ChannelRef): void;
14
+ export declare function validateChannelPostRef(value: ChannelPostRef): void;
15
+ export interface ChannelDescriptor extends ExtensibleModel {
16
+ readonly channelId: string;
17
+ readonly nonce: Uint8Array;
18
+ readonly creator: string;
19
+ readonly relayId: string;
20
+ readonly name: string;
21
+ readonly description?: string;
22
+ readonly moderators?: readonly string[];
23
+ readonly revision: number;
24
+ readonly status: 'active' | 'closed';
25
+ readonly createdAt: number;
26
+ readonly updatedAt: number;
27
+ readonly deviceSignature: Uint8Array;
28
+ }
29
+ export declare const channelDescriptorCodec: import("../protocol/codec.js").ProtocolCodec<ChannelDescriptor>;
30
+ export declare const channelDescriptorInput: (value: ChannelDescriptor, context: NetworkContext) => Uint8Array;
31
+ export declare function validateChannelDescriptor(value: ChannelDescriptor, context: NetworkContext): void;
32
+ export interface ChannelPost extends ExtensibleModel {
33
+ readonly channelId: string;
34
+ readonly messageId: string;
35
+ readonly body?: MessageBody;
36
+ readonly attachments?: readonly ContentReference[];
37
+ readonly deviceSignature: Uint8Array;
38
+ }
39
+ export declare const channelPostCodec: import("../protocol/codec.js").ProtocolCodec<ChannelPost>;
40
+ export declare const channelPostInput: (value: ChannelPost, context: NetworkContext) => Uint8Array;
41
+ export declare function validateChannelPost(value: ChannelPost): void;
42
+ export interface ChannelPostEdit extends ExtensibleModel {
43
+ readonly channelId: string;
44
+ readonly targetSequence: number;
45
+ readonly body?: MessageBody | null;
46
+ readonly attachments?: readonly ContentReference[] | null;
47
+ readonly deviceSignature: Uint8Array;
48
+ }
49
+ export declare const channelPostEditCodec: import("../protocol/codec.js").ProtocolCodec<ChannelPostEdit>;
50
+ export declare const channelPostEditInput: (value: ChannelPostEdit, context: NetworkContext) => Uint8Array;
51
+ export declare function validateChannelPostEdit(value: ChannelPostEdit): void;
52
+ /** Applies replacement/deletion/omission in acceptance order and validates the resulting complete post. Does not alter signed evidence. */
53
+ export declare function applyChannelPostEdit(post: ChannelPost, edit: ChannelPostEdit): ChannelPost;
54
+ export interface ChannelPostDelete extends ExtensibleModel {
55
+ readonly channelId: string;
56
+ readonly targetSequence: number;
57
+ readonly reason?: string;
58
+ readonly deviceSignature: Uint8Array;
59
+ }
60
+ export declare const channelPostDeleteCodec: import("../protocol/codec.js").ProtocolCodec<ChannelPostDelete>;
61
+ export declare const channelPostDeleteInput: (value: ChannelPostDelete, context: NetworkContext) => Uint8Array;
62
+ export declare function validateChannelPostDelete(value: ChannelPostDelete): void;
63
+ export type ChannelPayload = {
64
+ readonly kind: 'descriptor';
65
+ readonly value: ChannelDescriptor;
66
+ } | {
67
+ readonly kind: 'post';
68
+ readonly value: ChannelPost;
69
+ } | {
70
+ readonly kind: 'edit';
71
+ readonly value: ChannelPostEdit;
72
+ } | {
73
+ readonly kind: 'delete';
74
+ readonly value: ChannelPostDelete;
75
+ };
76
+ export declare const channelPayloadCodec: ValueCodec<ChannelPayload>;
77
+ export declare function validateChannelPayload(payload: ChannelPayload, context: NetworkContext): void;
78
+ export declare const channelPayloadInput: (payload: ChannelPayload, context: NetworkContext) => Uint8Array;
79
+ export interface ChannelEvent extends ExtensibleModel {
80
+ readonly sequence: number;
81
+ readonly descriptorRev: number;
82
+ readonly payload: ChannelPayload;
83
+ readonly acceptedAt: number;
84
+ readonly signerDeviceId: string;
85
+ }
86
+ export declare const channelEventCodec: import("../protocol/codec.js").ProtocolCodec<ChannelEvent>;
87
+ export declare function validateChannelEvent(value: ChannelEvent, context: NetworkContext): void;
88
+ export interface ChannelResolveResult extends ExtensibleModel {
89
+ readonly descriptor: ChannelDescriptor;
90
+ readonly signerCertificate: DeviceCertificate;
91
+ }
92
+ export declare const channelResolveResultCodec: import("../protocol/codec.js").ProtocolCodec<ChannelResolveResult>;
93
+ export declare function verifyChannelDescriptor(value: ChannelResolveResult, context: NetworkContext, channel: ChannelRef): void;
94
+ export declare function verifyChannelEvent(value: ChannelEvent, certificate: DeviceCertificate, descriptor: ChannelDescriptor, context: NetworkContext, channel: ChannelRef): void;
95
+ export interface ChannelReadQuery extends ExtensibleModel {
96
+ readonly channelId: string;
97
+ readonly before?: number;
98
+ readonly after?: number;
99
+ readonly limit?: number;
100
+ }
101
+ export declare const channelReadQueryCodec: import("../protocol/codec.js").ProtocolCodec<ChannelReadQuery>;
102
+ export declare function validateChannelReadQuery(value: ChannelReadQuery): void;
103
+ export interface ChannelReadPage extends ExtensibleModel {
104
+ readonly events: readonly ChannelEvent[];
105
+ readonly certificates: readonly DeviceCertificate[];
106
+ readonly hasMore: boolean;
107
+ }
108
+ export declare const channelReadPageCodec: import("../protocol/codec.js").ProtocolCodec<ChannelReadPage>;
109
+ /** Validates page boundaries and historical certificate coverage; descriptor authorization is checked by the reader before persistence. */
110
+ export declare function validateChannelReadPage(value: ChannelReadPage, query: ChannelReadQuery, context: NetworkContext): ReadonlyMap<string, DeviceCertificate>;
111
+ export interface ChannelResolveQuery extends ExtensibleModel {
112
+ readonly channelId: string;
113
+ readonly revision?: number;
114
+ }
115
+ export declare const channelResolveQueryCodec: import("../protocol/codec.js").ProtocolCodec<ChannelResolveQuery>;
116
+ export interface ChannelCloseRequest extends ExtensibleModel {
117
+ readonly channelId: string;
118
+ readonly revision: number;
119
+ readonly updatedAt: number;
120
+ readonly deviceSignature: Uint8Array;
121
+ }
122
+ export declare const channelCloseRequestCodec: import("../protocol/codec.js").ProtocolCodec<ChannelCloseRequest>;
123
+ export interface ChannelReportRequest extends ExtensibleModel {
124
+ readonly channelId: string;
125
+ readonly targetSequence: number;
126
+ readonly reason: string;
127
+ }
128
+ export declare const channelReportRequestCodec: import("../protocol/codec.js").ProtocolCodec<ChannelReportRequest>;
129
+ export declare function validateChannelReportRequest(value: ChannelReportRequest): void;
130
+ export interface ChannelSubscriptionRequest extends ExtensibleModel {
131
+ readonly channelIds: readonly string[];
132
+ }
133
+ export declare const channelSubscriptionRequestCodec: import("../protocol/codec.js").ProtocolCodec<ChannelSubscriptionRequest>;
134
+ export declare function validateChannelSubscriptionRequest(value: ChannelSubscriptionRequest): void;
135
+ export interface ChannelTimelineChangedNotification extends ExtensibleModel {
136
+ readonly channelId: string;
137
+ readonly head: number;
138
+ }
139
+ export declare const channelTimelineChangedCodec: import("../protocol/codec.js").ProtocolCodec<ChannelTimelineChangedNotification>;
140
+ export declare function validateChannelTimelineChanged(value: ChannelTimelineChangedNotification): void;
141
+ //# sourceMappingURL=channels.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"channels.d.ts","sourceRoot":"","sources":["../../src/models/channels.ts"],"names":[],"mappings":"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"}