@magicred-1/ble-mesh 1.2.1 → 1.2.3

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.
@@ -0,0 +1,178 @@
1
+ export interface Peer {
2
+ peerId: string;
3
+ nickname: string;
4
+ isConnected: boolean;
5
+ rssi?: number;
6
+ lastSeen: number;
7
+ isVerified: boolean;
8
+ }
9
+ export interface Message {
10
+ id: string;
11
+ content: string;
12
+ senderPeerId: string;
13
+ senderNickname: string;
14
+ timestamp: number;
15
+ isPrivate: boolean;
16
+ channel?: string;
17
+ }
18
+ export interface FileTransfer {
19
+ id: string;
20
+ fileName: string;
21
+ fileSize: number;
22
+ mimeType: string;
23
+ data: string;
24
+ senderPeerId: string;
25
+ timestamp: number;
26
+ }
27
+ export interface SolanaTransaction {
28
+ id: string;
29
+ /** Base64-encoded serialized transaction (could be partially signed) */
30
+ serializedTransaction: string;
31
+ /** The peer ID who initiated/sent the transaction */
32
+ senderPeerId: string;
33
+ /** The public key of the first signer (sender) */
34
+ firstSignerPublicKey: string;
35
+ /**
36
+ * The preferred public key of the second signer (optional).
37
+ * If not provided, any peer can sign as the second signer.
38
+ */
39
+ secondSignerPublicKey?: string;
40
+ /** Description or purpose of the transaction */
41
+ description?: string;
42
+ /** Timestamp when transaction was sent */
43
+ timestamp: number;
44
+ /** Whether this transaction requires a second signer to sign */
45
+ requiresSecondSigner: boolean;
46
+ }
47
+ export interface TransactionResponse {
48
+ id: string;
49
+ /** The peer ID who responded */
50
+ responderPeerId: string;
51
+ /** Base64-encoded fully signed transaction (after second signer signs) */
52
+ signedTransaction?: string;
53
+ /** Error message if signing failed */
54
+ error?: string;
55
+ /** Timestamp of response */
56
+ timestamp: number;
57
+ }
58
+ export interface SolanaNonceTransaction {
59
+ recentBlockhash: string;
60
+ nonceAccount: string;
61
+ nonceAuthority: string;
62
+ feePayer: string;
63
+ instructions: Array<{
64
+ programId: string;
65
+ keys: Array<{
66
+ pubkey: string;
67
+ isSigner: boolean;
68
+ isWritable: boolean;
69
+ }>;
70
+ data: string;
71
+ }>;
72
+ }
73
+ export interface PermissionStatus {
74
+ bluetooth: boolean;
75
+ bluetoothAdvertise?: boolean;
76
+ bluetoothConnect?: boolean;
77
+ bluetoothScan?: boolean;
78
+ location: boolean;
79
+ }
80
+ export type ConnectionState = 'disconnected' | 'connecting' | 'connected' | 'scanning';
81
+ export interface MeshServiceConfig {
82
+ nickname?: string;
83
+ autoRequestPermissions?: boolean;
84
+ }
85
+ export type PeerListUpdatedEvent = {
86
+ peers: Peer[];
87
+ };
88
+ export type MessageReceivedEvent = {
89
+ message: Message;
90
+ };
91
+ export type FileReceivedEvent = {
92
+ file: FileTransfer;
93
+ };
94
+ export type TransactionReceivedEvent = {
95
+ transaction: SolanaTransaction;
96
+ };
97
+ export type TransactionResponseEvent = {
98
+ response: TransactionResponse;
99
+ };
100
+ export type ConnectionStateChangedEvent = {
101
+ state: ConnectionState;
102
+ peerCount: number;
103
+ };
104
+ export type PermissionsChangedEvent = {
105
+ permissions: PermissionStatus;
106
+ };
107
+ export type ErrorEvent = {
108
+ code: string;
109
+ message: string;
110
+ };
111
+ type EventCallback<T> = (data: T) => void;
112
+ declare class BleMeshService {
113
+ private isInitialized;
114
+ requestPermissions(): Promise<PermissionStatus>;
115
+ private requestAndroidPermissions;
116
+ private requestIOSPermissions;
117
+ checkPermissions(): Promise<PermissionStatus>;
118
+ private checkAndroidPermissions;
119
+ start(config?: MeshServiceConfig): Promise<void>;
120
+ stop(): Promise<void>;
121
+ setNickname(nickname: string): Promise<void>;
122
+ getMyPeerId(): Promise<string>;
123
+ getMyNickname(): Promise<string>;
124
+ getPeers(): Promise<Peer[]>;
125
+ sendMessage(content: string, channel?: string): Promise<string>;
126
+ sendPrivateMessage(content: string, recipientPeerId: string): Promise<string>;
127
+ sendFile(filePath: string, options?: {
128
+ recipientPeerId?: string;
129
+ channel?: string;
130
+ }): Promise<string>;
131
+ /**
132
+ * Send a Solana transaction for any peer to sign as second signer.
133
+ *
134
+ * @param serializedTransaction - Base64-encoded partially signed transaction
135
+ * @param options - Transaction options
136
+ * @param options.firstSignerPublicKey - Public key of the first signer (required)
137
+ * @param options.secondSignerPublicKey - Preferred second signer (optional, any peer can sign if not specified)
138
+ * @param options.description - Description of the transaction
139
+ * @param options.recipientPeerId - Specific peer to send to (optional, broadcasts to all if not specified)
140
+ */
141
+ sendTransaction(serializedTransaction: string, options?: {
142
+ firstSignerPublicKey: string;
143
+ secondSignerPublicKey?: string;
144
+ description?: string;
145
+ recipientPeerId?: string;
146
+ }): Promise<string>;
147
+ respondToTransaction(transactionId: string, recipientPeerId: string, response: {
148
+ signedTransaction?: string;
149
+ error?: string;
150
+ }): Promise<void>;
151
+ sendReadReceipt(messageId: string, recipientPeerId: string): Promise<void>;
152
+ hasEncryptedSession(peerId: string): Promise<boolean>;
153
+ initiateHandshake(peerId: string): Promise<void>;
154
+ sendSolanaNonceTransaction(transaction: SolanaNonceTransaction, recipientPeerId: string): Promise<string>;
155
+ getIdentityFingerprint(): Promise<string>;
156
+ getPeerFingerprint(peerId: string): Promise<string | null>;
157
+ broadcastAnnounce(): Promise<void>;
158
+ onPeerListUpdated(callback: EventCallback<PeerListUpdatedEvent>): () => void;
159
+ onMessageReceived(callback: EventCallback<MessageReceivedEvent>): () => void;
160
+ onFileReceived(callback: EventCallback<FileReceivedEvent>): () => void;
161
+ onTransactionReceived(callback: EventCallback<TransactionReceivedEvent>): () => void;
162
+ onTransactionResponse(callback: EventCallback<TransactionResponseEvent>): () => void;
163
+ onConnectionStateChanged(callback: EventCallback<ConnectionStateChangedEvent>): () => void;
164
+ onReadReceipt(callback: EventCallback<{
165
+ messageId: string;
166
+ fromPeerId: string;
167
+ }>): () => void;
168
+ onDeliveryAck(callback: EventCallback<{
169
+ messageId: string;
170
+ fromPeerId: string;
171
+ }>): () => void;
172
+ onError(callback: EventCallback<ErrorEvent>): () => void;
173
+ private ensureInitialized;
174
+ }
175
+ export declare const BleMesh: BleMeshService;
176
+ export { BleMeshService };
177
+ export default BleMesh;
178
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@magicred-1/ble-mesh",
3
- "version": "1.2.1",
3
+ "version": "1.2.3",
4
4
  "description": "BLE Mesh networking library for React Native with seamless permissions",
5
5
  "main": "lib/commonjs/index",
6
6
  "module": "lib/module/index",