@meshwhisper/sdk 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +138 -0
- package/dist/browser/index.d.ts +4 -0
- package/dist/browser/index.d.ts.map +1 -0
- package/dist/browser/index.js +19 -0
- package/dist/browser/index.js.map +1 -0
- package/dist/chaff/index.d.ts +91 -0
- package/dist/chaff/index.d.ts.map +1 -0
- package/dist/chaff/index.js +268 -0
- package/dist/chaff/index.js.map +1 -0
- package/dist/cluster/index.d.ts +159 -0
- package/dist/cluster/index.d.ts.map +1 -0
- package/dist/cluster/index.js +393 -0
- package/dist/cluster/index.js.map +1 -0
- package/dist/compliance/index.d.ts +129 -0
- package/dist/compliance/index.d.ts.map +1 -0
- package/dist/compliance/index.js +315 -0
- package/dist/compliance/index.js.map +1 -0
- package/dist/crypto/index.d.ts +65 -0
- package/dist/crypto/index.d.ts.map +1 -0
- package/dist/crypto/index.js +146 -0
- package/dist/crypto/index.js.map +1 -0
- package/dist/group/index.d.ts +155 -0
- package/dist/group/index.d.ts.map +1 -0
- package/dist/group/index.js +560 -0
- package/dist/group/index.js.map +1 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +11 -0
- package/dist/index.js.map +1 -0
- package/dist/namespace/index.d.ts +155 -0
- package/dist/namespace/index.d.ts.map +1 -0
- package/dist/namespace/index.js +278 -0
- package/dist/namespace/index.js.map +1 -0
- package/dist/node/index.d.ts +4 -0
- package/dist/node/index.d.ts.map +1 -0
- package/dist/node/index.js +19 -0
- package/dist/node/index.js.map +1 -0
- package/dist/packet/index.d.ts +63 -0
- package/dist/packet/index.d.ts.map +1 -0
- package/dist/packet/index.js +244 -0
- package/dist/packet/index.js.map +1 -0
- package/dist/permissions/index.d.ts +107 -0
- package/dist/permissions/index.d.ts.map +1 -0
- package/dist/permissions/index.js +282 -0
- package/dist/permissions/index.js.map +1 -0
- package/dist/persistence/idb-storage.d.ts +27 -0
- package/dist/persistence/idb-storage.d.ts.map +1 -0
- package/dist/persistence/idb-storage.js +75 -0
- package/dist/persistence/idb-storage.js.map +1 -0
- package/dist/persistence/index.d.ts +4 -0
- package/dist/persistence/index.d.ts.map +1 -0
- package/dist/persistence/index.js +3 -0
- package/dist/persistence/index.js.map +1 -0
- package/dist/persistence/node-storage.d.ts +33 -0
- package/dist/persistence/node-storage.d.ts.map +1 -0
- package/dist/persistence/node-storage.js +90 -0
- package/dist/persistence/node-storage.js.map +1 -0
- package/dist/persistence/serialization.d.ts +4 -0
- package/dist/persistence/serialization.d.ts.map +1 -0
- package/dist/persistence/serialization.js +49 -0
- package/dist/persistence/serialization.js.map +1 -0
- package/dist/persistence/types.d.ts +29 -0
- package/dist/persistence/types.d.ts.map +1 -0
- package/dist/persistence/types.js +5 -0
- package/dist/persistence/types.js.map +1 -0
- package/dist/ratchet/index.d.ts +80 -0
- package/dist/ratchet/index.d.ts.map +1 -0
- package/dist/ratchet/index.js +259 -0
- package/dist/ratchet/index.js.map +1 -0
- package/dist/reciprocity/index.d.ts +109 -0
- package/dist/reciprocity/index.d.ts.map +1 -0
- package/dist/reciprocity/index.js +311 -0
- package/dist/reciprocity/index.js.map +1 -0
- package/dist/relay/index.d.ts +87 -0
- package/dist/relay/index.d.ts.map +1 -0
- package/dist/relay/index.js +286 -0
- package/dist/relay/index.js.map +1 -0
- package/dist/routing/index.d.ts +136 -0
- package/dist/routing/index.d.ts.map +1 -0
- package/dist/routing/index.js +478 -0
- package/dist/routing/index.js.map +1 -0
- package/dist/sdk/index.d.ts +322 -0
- package/dist/sdk/index.d.ts.map +1 -0
- package/dist/sdk/index.js +1530 -0
- package/dist/sdk/index.js.map +1 -0
- package/dist/sybil/index.d.ts +123 -0
- package/dist/sybil/index.d.ts.map +1 -0
- package/dist/sybil/index.js +491 -0
- package/dist/sybil/index.js.map +1 -0
- package/dist/transport/browser/index.d.ts +34 -0
- package/dist/transport/browser/index.d.ts.map +1 -0
- package/dist/transport/browser/index.js +176 -0
- package/dist/transport/browser/index.js.map +1 -0
- package/dist/transport/local/index.d.ts +57 -0
- package/dist/transport/local/index.d.ts.map +1 -0
- package/dist/transport/local/index.js +442 -0
- package/dist/transport/local/index.js.map +1 -0
- package/dist/transport/negotiator/index.d.ts +79 -0
- package/dist/transport/negotiator/index.d.ts.map +1 -0
- package/dist/transport/negotiator/index.js +289 -0
- package/dist/transport/negotiator/index.js.map +1 -0
- package/dist/transport/node/index.d.ts +56 -0
- package/dist/transport/node/index.d.ts.map +1 -0
- package/dist/transport/node/index.js +209 -0
- package/dist/transport/node/index.js.map +1 -0
- package/dist/transport/noop/index.d.ts +11 -0
- package/dist/transport/noop/index.d.ts.map +1 -0
- package/dist/transport/noop/index.js +20 -0
- package/dist/transport/noop/index.js.map +1 -0
- package/dist/transport/p2p/index.d.ts +109 -0
- package/dist/transport/p2p/index.d.ts.map +1 -0
- package/dist/transport/p2p/index.js +237 -0
- package/dist/transport/p2p/index.js.map +1 -0
- package/dist/transport/websocket/index.d.ts +89 -0
- package/dist/transport/websocket/index.d.ts.map +1 -0
- package/dist/transport/websocket/index.js +498 -0
- package/dist/transport/websocket/index.js.map +1 -0
- package/dist/transport/websocket/serialize.d.ts +5 -0
- package/dist/transport/websocket/serialize.d.ts.map +1 -0
- package/dist/transport/websocket/serialize.js +55 -0
- package/dist/transport/websocket/serialize.js.map +1 -0
- package/dist/types.d.ts +215 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +15 -0
- package/dist/types.js.map +1 -0
- package/dist/x3dh/index.d.ts +120 -0
- package/dist/x3dh/index.d.ts.map +1 -0
- package/dist/x3dh/index.js +290 -0
- package/dist/x3dh/index.js.map +1 -0
- package/package.json +59 -0
- package/src/browser/index.ts +19 -0
- package/src/chaff/index.ts +340 -0
- package/src/cluster/index.ts +482 -0
- package/src/compliance/index.ts +407 -0
- package/src/crypto/index.ts +193 -0
- package/src/group/index.ts +719 -0
- package/src/index.ts +87 -0
- package/src/lz4js.d.ts +58 -0
- package/src/namespace/index.ts +336 -0
- package/src/node/index.ts +19 -0
- package/src/packet/index.ts +326 -0
- package/src/permissions/index.ts +405 -0
- package/src/persistence/idb-storage.ts +83 -0
- package/src/persistence/index.ts +3 -0
- package/src/persistence/node-storage.ts +96 -0
- package/src/persistence/serialization.ts +75 -0
- package/src/persistence/types.ts +33 -0
- package/src/ratchet/index.ts +363 -0
- package/src/reciprocity/index.ts +371 -0
- package/src/relay/index.ts +382 -0
- package/src/routing/index.ts +577 -0
- package/src/sdk/index.ts +1994 -0
- package/src/sybil/index.ts +661 -0
- package/src/transport/browser/index.ts +201 -0
- package/src/transport/local/index.ts +540 -0
- package/src/transport/negotiator/index.ts +397 -0
- package/src/transport/node/index.ts +234 -0
- package/src/transport/noop/index.ts +22 -0
- package/src/transport/p2p/index.ts +345 -0
- package/src/transport/websocket/index.ts +660 -0
- package/src/transport/websocket/serialize.ts +68 -0
- package/src/types.ts +275 -0
- package/src/x3dh/index.ts +388 -0
|
@@ -0,0 +1,322 @@
|
|
|
1
|
+
import type { BearerType, Group, Message, MessageUrgency, PermissionModel, PresenceStatus, MeshWhisperConfig, StoredMessage } from '../types.js';
|
|
2
|
+
import type { PlatformP2PBridge } from '../transport/p2p/index.js';
|
|
3
|
+
export interface SendOptions {
|
|
4
|
+
/** Message urgency: background | normal | urgent | critical. */
|
|
5
|
+
urgency?: MessageUrgency;
|
|
6
|
+
/** Message expiry in seconds from now. */
|
|
7
|
+
expiry?: number;
|
|
8
|
+
}
|
|
9
|
+
export interface MediaSendOptions extends SendOptions {
|
|
10
|
+
/** MIME type of the media (e.g. "image/jpeg", "audio/mp4"). */
|
|
11
|
+
mimeType?: string;
|
|
12
|
+
/** Custom upload handler. If provided, overrides the Node media endpoint. */
|
|
13
|
+
upload?: (encryptedData: Uint8Array) => Promise<string>;
|
|
14
|
+
}
|
|
15
|
+
export interface MediaMessage {
|
|
16
|
+
/** URL to the encrypted media blob. */
|
|
17
|
+
url: string;
|
|
18
|
+
/** Base64-encoded AES-256-GCM key for decrypting the blob. */
|
|
19
|
+
key: string;
|
|
20
|
+
/** Optional MIME type. */
|
|
21
|
+
mimeType?: string;
|
|
22
|
+
}
|
|
23
|
+
export interface CreateGroupOptions {
|
|
24
|
+
name: string;
|
|
25
|
+
members: string[];
|
|
26
|
+
permissionModel?: PermissionModel;
|
|
27
|
+
}
|
|
28
|
+
export interface TransportChangedEvent {
|
|
29
|
+
type: BearerType;
|
|
30
|
+
available: boolean;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* A handle to a group that provides a `send()` method, mirroring
|
|
34
|
+
* the PRD's `group.send(payload)` API.
|
|
35
|
+
*/
|
|
36
|
+
export declare class GroupHandle {
|
|
37
|
+
/** The underlying group metadata. */
|
|
38
|
+
readonly group: Group;
|
|
39
|
+
private readonly sdk;
|
|
40
|
+
/** @internal */
|
|
41
|
+
constructor(group: Group, sdk: MeshWhisper);
|
|
42
|
+
/** The group's unique ID. */
|
|
43
|
+
get id(): string;
|
|
44
|
+
/** The group's display name. */
|
|
45
|
+
get name(): string;
|
|
46
|
+
/** List of member IDs. */
|
|
47
|
+
get members(): string[];
|
|
48
|
+
/**
|
|
49
|
+
* Send a message to all group members.
|
|
50
|
+
* The payload is encrypted with the local peer's sender key and
|
|
51
|
+
* relayed through the group's dynamic relay tree.
|
|
52
|
+
*/
|
|
53
|
+
send(payload: Uint8Array): Promise<void>;
|
|
54
|
+
/** Add a member to the group. */
|
|
55
|
+
addMember(peerId: string): void;
|
|
56
|
+
/** Remove a member from the group. */
|
|
57
|
+
removeMember(peerId: string): void;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* MeshWhisper is the primary API surface for the serverless P2P E2EE
|
|
61
|
+
* messaging SDK. Instantiate via `MeshWhisper.init(config)`, then use
|
|
62
|
+
* the returned instance (also accessible via `MeshWhisper.instance`)
|
|
63
|
+
* for all messaging operations.
|
|
64
|
+
*
|
|
65
|
+
* Static convenience methods delegate to the singleton instance.
|
|
66
|
+
*/
|
|
67
|
+
export declare class MeshWhisper {
|
|
68
|
+
private static _instance;
|
|
69
|
+
private readonly config;
|
|
70
|
+
private readonly identity;
|
|
71
|
+
private readonly namespaceManager;
|
|
72
|
+
private readonly peerCache;
|
|
73
|
+
private readonly permissionManager;
|
|
74
|
+
private readonly negotiator;
|
|
75
|
+
private readonly router;
|
|
76
|
+
private readonly relayStore;
|
|
77
|
+
private readonly relayManager;
|
|
78
|
+
private readonly reciprocityLedger;
|
|
79
|
+
private readonly groupManager;
|
|
80
|
+
private readonly chaffGenerator;
|
|
81
|
+
private readonly entropyChallenger;
|
|
82
|
+
private readonly zkReputation;
|
|
83
|
+
private cluster;
|
|
84
|
+
private readonly wsTransport;
|
|
85
|
+
private readonly localTransport;
|
|
86
|
+
private readonly p2pTransport;
|
|
87
|
+
private nodeTransport;
|
|
88
|
+
private signedPreKeyPair;
|
|
89
|
+
private readonly storage;
|
|
90
|
+
private readonly sessions;
|
|
91
|
+
private readonly peerPreKeyBundles;
|
|
92
|
+
private readonly pendingHandshakes;
|
|
93
|
+
/** Rolling set of seen message IDs to prevent duplicates. */
|
|
94
|
+
private readonly seenMessageIds;
|
|
95
|
+
private readonly presenceRecords;
|
|
96
|
+
private onMessageHandler;
|
|
97
|
+
private onPresenceHandler;
|
|
98
|
+
private readonly transportChangedHandlers;
|
|
99
|
+
private running;
|
|
100
|
+
private ephemeralRotationTimer;
|
|
101
|
+
private constructor();
|
|
102
|
+
/**
|
|
103
|
+
* Initialize the MeshWhisper SDK with the given configuration.
|
|
104
|
+
*
|
|
105
|
+
* ```ts
|
|
106
|
+
* const mw = await MeshWhisper.init({
|
|
107
|
+
* namespace: "com.example.fitnessapp",
|
|
108
|
+
* developerKey: "base64-encoded-public-key",
|
|
109
|
+
* permissionModel: "mutual",
|
|
110
|
+
* onMessage: (message) => { ... },
|
|
111
|
+
* onPresence: (peer, status) => { ... },
|
|
112
|
+
* config: {
|
|
113
|
+
* relayWillingness: "auto",
|
|
114
|
+
* chaffRate: "normal",
|
|
115
|
+
* storeTTL: 72,
|
|
116
|
+
* clusterEnabled: true,
|
|
117
|
+
* },
|
|
118
|
+
* });
|
|
119
|
+
* ```
|
|
120
|
+
*/
|
|
121
|
+
static init(config: MeshWhisperConfig): Promise<MeshWhisper>;
|
|
122
|
+
/**
|
|
123
|
+
* Returns the active MeshWhisper instance, or throws if not initialized.
|
|
124
|
+
*/
|
|
125
|
+
static get instance(): MeshWhisper;
|
|
126
|
+
private start;
|
|
127
|
+
/**
|
|
128
|
+
* Shut down the SDK, stopping all transports, timers, and subsystems.
|
|
129
|
+
* After calling `shutdown()`, you must call `MeshWhisper.init()` again
|
|
130
|
+
* to resume operation.
|
|
131
|
+
*/
|
|
132
|
+
shutdown(): Promise<void>;
|
|
133
|
+
/**
|
|
134
|
+
* Send an encrypted message to a recipient.
|
|
135
|
+
*
|
|
136
|
+
* If no session exists with the recipient, an X3DH handshake is
|
|
137
|
+
* automatically initiated. Messages are compressed, encrypted via
|
|
138
|
+
* the Double Ratchet, assembled into a packet, and routed through
|
|
139
|
+
* the best available transport.
|
|
140
|
+
*
|
|
141
|
+
* ```ts
|
|
142
|
+
* await MeshWhisper.send(recipientId, payload, {
|
|
143
|
+
* urgency: "normal",
|
|
144
|
+
* expiry: 3600,
|
|
145
|
+
* });
|
|
146
|
+
* ```
|
|
147
|
+
*/
|
|
148
|
+
static send(recipientId: string, payload: Uint8Array, options?: SendOptions): Promise<void>;
|
|
149
|
+
sendMessage(recipientId: string, payload: Uint8Array, options?: SendOptions): Promise<void>;
|
|
150
|
+
/**
|
|
151
|
+
* Send media to a recipient using the two-part flow:
|
|
152
|
+
* 1. Encrypt locally with a random AES-256-GCM key.
|
|
153
|
+
* 2. Upload the ciphertext to the Node (or a custom handler).
|
|
154
|
+
* 3. Send the URL + key through the normal encrypted message channel.
|
|
155
|
+
*
|
|
156
|
+
* The Node never receives the decryption key.
|
|
157
|
+
*
|
|
158
|
+
* ```ts
|
|
159
|
+
* await MeshWhisper.sendMedia(recipientId, imageBytes, { mimeType: 'image/jpeg' });
|
|
160
|
+
* ```
|
|
161
|
+
*/
|
|
162
|
+
static sendMedia(recipientId: string, data: Uint8Array, options?: MediaSendOptions): Promise<void>;
|
|
163
|
+
sendMediaMessage(recipientId: string, data: Uint8Array, options?: MediaSendOptions): Promise<void>;
|
|
164
|
+
/**
|
|
165
|
+
* Download and decrypt a media message received via `onMessage`.
|
|
166
|
+
* Detects messages produced by `sendMedia` automatically.
|
|
167
|
+
*
|
|
168
|
+
* ```ts
|
|
169
|
+
* const bytes = await MeshWhisper.downloadMedia(message);
|
|
170
|
+
* ```
|
|
171
|
+
*/
|
|
172
|
+
static downloadMedia(message: Message): Promise<Uint8Array | null>;
|
|
173
|
+
downloadMediaMessage(message: Message): Promise<Uint8Array | null>;
|
|
174
|
+
private uploadMediaToNode;
|
|
175
|
+
/**
|
|
176
|
+
* Create a new group.
|
|
177
|
+
*
|
|
178
|
+
* ```ts
|
|
179
|
+
* const group = MeshWhisper.createGroup({
|
|
180
|
+
* name: "Team Chat",
|
|
181
|
+
* members: [id1, id2, id3],
|
|
182
|
+
* permissionModel: "open",
|
|
183
|
+
* });
|
|
184
|
+
* group.send(payload);
|
|
185
|
+
* ```
|
|
186
|
+
*/
|
|
187
|
+
static createGroup(options: CreateGroupOptions): GroupHandle;
|
|
188
|
+
createGroupInstance(options: CreateGroupOptions): GroupHandle;
|
|
189
|
+
/**
|
|
190
|
+
* Retrieve a group handle by ID.
|
|
191
|
+
* Returns null if the group is not found.
|
|
192
|
+
*/
|
|
193
|
+
getGroup(groupId: string): GroupHandle | null;
|
|
194
|
+
/**
|
|
195
|
+
* List all groups the local peer is participating in.
|
|
196
|
+
*/
|
|
197
|
+
getGroups(): GroupHandle[];
|
|
198
|
+
/**
|
|
199
|
+
* Send a message to all members of a group.
|
|
200
|
+
* @internal — use GroupHandle.send() instead.
|
|
201
|
+
*/
|
|
202
|
+
sendToGroup(groupId: string, payload: Uint8Array): Promise<void>;
|
|
203
|
+
/**
|
|
204
|
+
* Generate a QR code payload for first contact. Contains the
|
|
205
|
+
* local peer's identity public key and pre-key bundle so a
|
|
206
|
+
* scanner can initiate an X3DH handshake.
|
|
207
|
+
*
|
|
208
|
+
* Returns a base64-encoded string suitable for embedding in a QR code.
|
|
209
|
+
*/
|
|
210
|
+
static generateContactQR(): string;
|
|
211
|
+
generateContactQRInstance(): string;
|
|
212
|
+
/**
|
|
213
|
+
* Accept a contact from scanned QR data. Parses the peer's
|
|
214
|
+
* pre-key bundle and initiates an X3DH handshake.
|
|
215
|
+
*/
|
|
216
|
+
static acceptContact(scannedQRData: string): Promise<void>;
|
|
217
|
+
acceptContactInstance(scannedQRData: string): Promise<void>;
|
|
218
|
+
/**
|
|
219
|
+
* Introduce two contacts to each other.
|
|
220
|
+
* Both peers must already be contacts of the local peer.
|
|
221
|
+
*/
|
|
222
|
+
static introduceContacts(peerA: string, peerB: string): Promise<void>;
|
|
223
|
+
introduceContactsInstance(peerA: string, peerB: string): Promise<void>;
|
|
224
|
+
/**
|
|
225
|
+
* Get the current presence status of a peer.
|
|
226
|
+
*/
|
|
227
|
+
static getPresence(peerId: string): PresenceStatus;
|
|
228
|
+
getPresenceInstance(peerId: string): PresenceStatus;
|
|
229
|
+
/**
|
|
230
|
+
* Register a callback that fires when transport availability changes.
|
|
231
|
+
*/
|
|
232
|
+
static onTransportChanged(handler: (event: TransportChangedEvent) => void): void;
|
|
233
|
+
onTransportChangedInstance(handler: (event: TransportChangedEvent) => void): void;
|
|
234
|
+
/**
|
|
235
|
+
* Unregister a transport-changed handler.
|
|
236
|
+
*/
|
|
237
|
+
offTransportChanged(handler: (event: TransportChangedEvent) => void): void;
|
|
238
|
+
/**
|
|
239
|
+
* Returns the local peer's public identity string (hex-encoded X25519 public key).
|
|
240
|
+
*/
|
|
241
|
+
getLocalPeerId(): string;
|
|
242
|
+
/**
|
|
243
|
+
* Returns the device's current and previous epoch-hour destination hashes
|
|
244
|
+
* as hex strings. Used by NodeTransport to register with the Node.
|
|
245
|
+
*/
|
|
246
|
+
private getCurrentDestHashes;
|
|
247
|
+
/**
|
|
248
|
+
* Returns the local peer's X25519 public key bytes.
|
|
249
|
+
*/
|
|
250
|
+
getPublicKey(): Uint8Array;
|
|
251
|
+
/**
|
|
252
|
+
* Returns the namespace ID for this SDK instance.
|
|
253
|
+
*/
|
|
254
|
+
getNamespaceId(): Uint8Array;
|
|
255
|
+
/**
|
|
256
|
+
* Whether the SDK is currently running.
|
|
257
|
+
*/
|
|
258
|
+
isRunning(): boolean;
|
|
259
|
+
/**
|
|
260
|
+
* Register a native P2P bridge (e.g., Apple Multipeer Connectivity
|
|
261
|
+
* or Google Nearby Connections). Call before `init()` for the bridge
|
|
262
|
+
* to be available at startup.
|
|
263
|
+
*/
|
|
264
|
+
static registerPlatformBridge(bridge: PlatformP2PBridge): void;
|
|
265
|
+
private handleIncomingPacket;
|
|
266
|
+
private processLocalPacket;
|
|
267
|
+
private handleDataPacket;
|
|
268
|
+
private handleHandshakePacket;
|
|
269
|
+
private handleRouteRequestPacket;
|
|
270
|
+
private handleRouteOfferPacket;
|
|
271
|
+
private maybeRelay;
|
|
272
|
+
private ensureSession;
|
|
273
|
+
private initiateHandshake;
|
|
274
|
+
private completeIncomingHandshake;
|
|
275
|
+
private routeAndSend;
|
|
276
|
+
private updatePresence;
|
|
277
|
+
/**
|
|
278
|
+
* Returns stored messages for a conversation, most recent last.
|
|
279
|
+
* Requires a `storage` backend in the config; returns [] without one.
|
|
280
|
+
*
|
|
281
|
+
* ```ts
|
|
282
|
+
* const messages = await MeshWhisper.getMessages(peerId, { limit: 50 });
|
|
283
|
+
* ```
|
|
284
|
+
*/
|
|
285
|
+
static getMessages(peerId: string, options?: {
|
|
286
|
+
limit?: number;
|
|
287
|
+
before?: number;
|
|
288
|
+
}): Promise<StoredMessage[]>;
|
|
289
|
+
getMessagesInstance(peerId: string, options?: {
|
|
290
|
+
limit?: number;
|
|
291
|
+
before?: number;
|
|
292
|
+
}): Promise<StoredMessage[]>;
|
|
293
|
+
/**
|
|
294
|
+
* Mark a received message as read and send a read receipt to the sender.
|
|
295
|
+
* Call this when the user views the conversation.
|
|
296
|
+
*
|
|
297
|
+
* ```ts
|
|
298
|
+
* await MeshWhisper.markRead(message.id, message.senderId);
|
|
299
|
+
* ```
|
|
300
|
+
*/
|
|
301
|
+
static markRead(messageId: string, peerId: string): Promise<void>;
|
|
302
|
+
markReadInstance(messageId: string, peerId: string): Promise<void>;
|
|
303
|
+
private loadPersistedState;
|
|
304
|
+
/**
|
|
305
|
+
* Re-initiates X3DH sessions with all contacts whose prekey bundles are saved.
|
|
306
|
+
* Called on startup when session state is missing but contacts exist — handles
|
|
307
|
+
* storage wipe and new-device-with-same-identity-key scenarios.
|
|
308
|
+
*/
|
|
309
|
+
private reinitiateSessionsOnStartup;
|
|
310
|
+
private persistSession;
|
|
311
|
+
private persistPreKeyBundle;
|
|
312
|
+
private persistContacts;
|
|
313
|
+
private persistPeers;
|
|
314
|
+
private persistSeenIds;
|
|
315
|
+
private pruneSeenIds;
|
|
316
|
+
private saveMessage;
|
|
317
|
+
private updateMessageStatus;
|
|
318
|
+
private sendControl;
|
|
319
|
+
private handleControlMessage;
|
|
320
|
+
private assertRunning;
|
|
321
|
+
}
|
|
322
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/sdk/index.ts"],"names":[],"mappings":"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"}
|