@unicitylabs/sphere-sdk 0.1.3 → 0.1.4
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 +54 -15
- package/dist/core/index.cjs +298 -72
- package/dist/core/index.cjs.map +1 -1
- package/dist/core/index.d.cts +300 -204
- package/dist/core/index.d.ts +300 -204
- package/dist/core/index.js +298 -72
- package/dist/core/index.js.map +1 -1
- package/dist/impl/browser/index.cjs +1089 -219
- package/dist/impl/browser/index.cjs.map +1 -1
- package/dist/impl/browser/index.js +1086 -222
- package/dist/impl/browser/index.js.map +1 -1
- package/dist/impl/browser/ipfs.cjs +443 -4
- package/dist/impl/browser/ipfs.cjs.map +1 -1
- package/dist/impl/browser/ipfs.js +442 -3
- package/dist/impl/browser/ipfs.js.map +1 -1
- package/dist/impl/nodejs/index.cjs +1078 -222
- package/dist/impl/nodejs/index.cjs.map +1 -1
- package/dist/impl/nodejs/index.d.cts +131 -55
- package/dist/impl/nodejs/index.d.ts +131 -55
- package/dist/impl/nodejs/index.js +1085 -225
- package/dist/impl/nodejs/index.js.map +1 -1
- package/dist/index.cjs +298 -72
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +608 -286
- package/dist/index.d.ts +608 -286
- package/dist/index.js +298 -72
- package/dist/index.js.map +1 -1
- package/package.json +6 -1
|
@@ -21,11 +21,12 @@ interface BaseProvider extends ProviderMetadata {
|
|
|
21
21
|
getStatus(): ProviderStatus;
|
|
22
22
|
}
|
|
23
23
|
interface Identity {
|
|
24
|
-
|
|
24
|
+
/** 33-byte compressed secp256k1 public key (for L3 chain) */
|
|
25
|
+
readonly chainPubkey: string;
|
|
25
26
|
/** L1 address (alpha1...) */
|
|
26
|
-
readonly
|
|
27
|
-
/** L3
|
|
28
|
-
readonly
|
|
27
|
+
readonly l1Address: string;
|
|
28
|
+
/** L3 DIRECT address (DIRECT://...) */
|
|
29
|
+
readonly directAddress?: string;
|
|
29
30
|
readonly ipnsName?: string;
|
|
30
31
|
readonly nametag?: string;
|
|
31
32
|
}
|
|
@@ -288,9 +289,10 @@ interface TransportProvider extends BaseProvider {
|
|
|
288
289
|
setIdentity(identity: FullIdentity): void;
|
|
289
290
|
/**
|
|
290
291
|
* Send encrypted direct message
|
|
292
|
+
* @param recipientTransportPubkey - Transport-specific pubkey for messaging
|
|
291
293
|
* @returns Event ID
|
|
292
294
|
*/
|
|
293
|
-
sendMessage(
|
|
295
|
+
sendMessage(recipientTransportPubkey: string, content: string): Promise<string>;
|
|
294
296
|
/**
|
|
295
297
|
* Subscribe to incoming direct messages
|
|
296
298
|
* @returns Unsubscribe function
|
|
@@ -298,9 +300,10 @@ interface TransportProvider extends BaseProvider {
|
|
|
298
300
|
onMessage(handler: MessageHandler): () => void;
|
|
299
301
|
/**
|
|
300
302
|
* Send token transfer payload
|
|
303
|
+
* @param recipientTransportPubkey - Transport-specific pubkey for messaging
|
|
301
304
|
* @returns Event ID
|
|
302
305
|
*/
|
|
303
|
-
sendTokenTransfer(
|
|
306
|
+
sendTokenTransfer(recipientTransportPubkey: string, payload: TokenTransferPayload): Promise<string>;
|
|
304
307
|
/**
|
|
305
308
|
* Subscribe to incoming token transfers
|
|
306
309
|
* @returns Unsubscribe function
|
|
@@ -310,11 +313,25 @@ interface TransportProvider extends BaseProvider {
|
|
|
310
313
|
* Resolve nametag to public key
|
|
311
314
|
*/
|
|
312
315
|
resolveNametag?(nametag: string): Promise<string | null>;
|
|
316
|
+
/**
|
|
317
|
+
* Resolve nametag to full address information
|
|
318
|
+
* Returns transportPubkey, chainPubkey, l1Address, directAddress, proxyAddress
|
|
319
|
+
*/
|
|
320
|
+
resolveNametagInfo?(nametag: string): Promise<NametagInfo | null>;
|
|
321
|
+
/**
|
|
322
|
+
* Recover nametag for current identity by decrypting stored encrypted nametag
|
|
323
|
+
* Used after wallet import to recover associated nametag
|
|
324
|
+
* @returns Decrypted nametag or null if none found
|
|
325
|
+
*/
|
|
326
|
+
recoverNametag?(): Promise<string | null>;
|
|
313
327
|
/**
|
|
314
328
|
* Register a nametag for this identity
|
|
329
|
+
* @param nametag - Nametag to register
|
|
330
|
+
* @param chainPubkey - 33-byte compressed secp256k1 public key (for L1/L3)
|
|
331
|
+
* @param directAddress - L3 DIRECT address (DIRECT://...)
|
|
315
332
|
* @returns true if successful, false if already taken
|
|
316
333
|
*/
|
|
317
|
-
registerNametag?(nametag: string,
|
|
334
|
+
registerNametag?(nametag: string, chainPubkey: string, directAddress: string): Promise<boolean>;
|
|
318
335
|
/**
|
|
319
336
|
* Publish nametag binding
|
|
320
337
|
*/
|
|
@@ -329,9 +346,10 @@ interface TransportProvider extends BaseProvider {
|
|
|
329
346
|
publishBroadcast?(content: string, tags?: string[]): Promise<string>;
|
|
330
347
|
/**
|
|
331
348
|
* Send payment request to a recipient
|
|
349
|
+
* @param recipientTransportPubkey - Transport-specific pubkey for messaging
|
|
332
350
|
* @returns Event ID
|
|
333
351
|
*/
|
|
334
|
-
sendPaymentRequest?(
|
|
352
|
+
sendPaymentRequest?(recipientTransportPubkey: string, request: PaymentRequestPayload): Promise<string>;
|
|
335
353
|
/**
|
|
336
354
|
* Subscribe to incoming payment requests
|
|
337
355
|
* @returns Unsubscribe function
|
|
@@ -339,9 +357,10 @@ interface TransportProvider extends BaseProvider {
|
|
|
339
357
|
onPaymentRequest?(handler: PaymentRequestHandler): () => void;
|
|
340
358
|
/**
|
|
341
359
|
* Send response to a payment request
|
|
360
|
+
* @param recipientTransportPubkey - Transport-specific pubkey for messaging
|
|
342
361
|
* @returns Event ID
|
|
343
362
|
*/
|
|
344
|
-
sendPaymentRequestResponse?(
|
|
363
|
+
sendPaymentRequestResponse?(recipientTransportPubkey: string, response: PaymentRequestResponsePayload): Promise<string>;
|
|
345
364
|
/**
|
|
346
365
|
* Subscribe to incoming payment request responses
|
|
347
366
|
* @returns Unsubscribe function
|
|
@@ -376,7 +395,10 @@ interface TransportProvider extends BaseProvider {
|
|
|
376
395
|
}
|
|
377
396
|
interface IncomingMessage {
|
|
378
397
|
id: string;
|
|
379
|
-
|
|
398
|
+
/** Transport-specific pubkey of sender */
|
|
399
|
+
senderTransportPubkey: string;
|
|
400
|
+
/** Sender's nametag (if known from NIP-17 unwrap) */
|
|
401
|
+
senderNametag?: string;
|
|
380
402
|
content: string;
|
|
381
403
|
timestamp: number;
|
|
382
404
|
encrypted: boolean;
|
|
@@ -391,13 +413,15 @@ interface TokenTransferPayload {
|
|
|
391
413
|
memo?: string;
|
|
392
414
|
/** Sender info */
|
|
393
415
|
sender?: {
|
|
394
|
-
pubkey
|
|
416
|
+
/** Transport-specific pubkey */
|
|
417
|
+
transportPubkey: string;
|
|
395
418
|
nametag?: string;
|
|
396
419
|
};
|
|
397
420
|
}
|
|
398
421
|
interface IncomingTokenTransfer {
|
|
399
422
|
id: string;
|
|
400
|
-
|
|
423
|
+
/** Transport-specific pubkey of sender */
|
|
424
|
+
senderTransportPubkey: string;
|
|
401
425
|
payload: TokenTransferPayload;
|
|
402
426
|
timestamp: number;
|
|
403
427
|
}
|
|
@@ -417,8 +441,8 @@ interface PaymentRequestPayload {
|
|
|
417
441
|
interface IncomingPaymentRequest {
|
|
418
442
|
/** Event ID */
|
|
419
443
|
id: string;
|
|
420
|
-
/**
|
|
421
|
-
|
|
444
|
+
/** Transport-specific pubkey of sender */
|
|
445
|
+
senderTransportPubkey: string;
|
|
422
446
|
/** Parsed request data */
|
|
423
447
|
request: {
|
|
424
448
|
requestId: string;
|
|
@@ -446,8 +470,8 @@ interface PaymentRequestResponsePayload {
|
|
|
446
470
|
interface IncomingPaymentRequestResponse {
|
|
447
471
|
/** Event ID */
|
|
448
472
|
id: string;
|
|
449
|
-
/**
|
|
450
|
-
|
|
473
|
+
/** Transport-specific pubkey of responder */
|
|
474
|
+
responderTransportPubkey: string;
|
|
451
475
|
/** Parsed response data */
|
|
452
476
|
response: {
|
|
453
477
|
requestId: string;
|
|
@@ -461,7 +485,8 @@ interface IncomingPaymentRequestResponse {
|
|
|
461
485
|
type PaymentRequestResponseHandler = (response: IncomingPaymentRequestResponse) => void;
|
|
462
486
|
interface IncomingBroadcast {
|
|
463
487
|
id: string;
|
|
464
|
-
|
|
488
|
+
/** Transport-specific pubkey of author */
|
|
489
|
+
authorTransportPubkey: string;
|
|
465
490
|
content: string;
|
|
466
491
|
tags: string[];
|
|
467
492
|
timestamp: number;
|
|
@@ -475,6 +500,26 @@ interface TransportEvent {
|
|
|
475
500
|
error?: string;
|
|
476
501
|
}
|
|
477
502
|
type TransportEventCallback = (event: TransportEvent) => void;
|
|
503
|
+
/**
|
|
504
|
+
* Full nametag address information
|
|
505
|
+
* Used for resolving nametag to all address formats
|
|
506
|
+
*/
|
|
507
|
+
interface NametagInfo {
|
|
508
|
+
/** Nametag name (without @) */
|
|
509
|
+
nametag: string;
|
|
510
|
+
/** Transport-specific pubkey (for messaging/encryption) */
|
|
511
|
+
transportPubkey: string;
|
|
512
|
+
/** 33-byte compressed secp256k1 public key (for L3 chain) */
|
|
513
|
+
chainPubkey: string;
|
|
514
|
+
/** L1 address (alpha1...) */
|
|
515
|
+
l1Address: string;
|
|
516
|
+
/** L3 DIRECT address (DIRECT://...) */
|
|
517
|
+
directAddress: string;
|
|
518
|
+
/** L3 PROXY address derived from nametag hash (PROXY:...) */
|
|
519
|
+
proxyAddress: string;
|
|
520
|
+
/** Event timestamp */
|
|
521
|
+
timestamp: number;
|
|
522
|
+
}
|
|
478
523
|
|
|
479
524
|
/**
|
|
480
525
|
* WebSocket Abstraction
|
|
@@ -515,6 +560,7 @@ type UUIDGenerator = () => string;
|
|
|
515
560
|
* - Real secp256k1 event signing
|
|
516
561
|
* - NIP-04 encryption/decryption
|
|
517
562
|
* - Event ID calculation
|
|
563
|
+
* - NostrClient for reliable connection management (ping, reconnect, NIP-42)
|
|
518
564
|
*
|
|
519
565
|
* WebSocket is injected via factory for cross-platform support
|
|
520
566
|
*/
|
|
@@ -546,15 +592,14 @@ declare class NostrTransportProvider implements TransportProvider {
|
|
|
546
592
|
private identity;
|
|
547
593
|
private keyManager;
|
|
548
594
|
private status;
|
|
549
|
-
private
|
|
550
|
-
private
|
|
595
|
+
private nostrClient;
|
|
596
|
+
private mainSubscriptionId;
|
|
551
597
|
private messageHandlers;
|
|
552
598
|
private transferHandlers;
|
|
553
599
|
private paymentRequestHandlers;
|
|
554
600
|
private paymentRequestResponseHandlers;
|
|
555
601
|
private broadcastHandlers;
|
|
556
602
|
private eventCallbacks;
|
|
557
|
-
private subscriptions;
|
|
558
603
|
constructor(config: NostrTransportProviderConfig);
|
|
559
604
|
connect(): Promise<void>;
|
|
560
605
|
disconnect(): Promise<void>;
|
|
@@ -576,6 +621,8 @@ declare class NostrTransportProvider implements TransportProvider {
|
|
|
576
621
|
/**
|
|
577
622
|
* Remove a relay dynamically
|
|
578
623
|
* Will disconnect from the relay if connected
|
|
624
|
+
* NOTE: NostrClient doesn't support removing individual relays at runtime.
|
|
625
|
+
* We remove from config so it won't be used on next connect().
|
|
579
626
|
*/
|
|
580
627
|
removeRelay(relayUrl: string): Promise<boolean>;
|
|
581
628
|
/**
|
|
@@ -601,16 +648,22 @@ declare class NostrTransportProvider implements TransportProvider {
|
|
|
601
648
|
sendPaymentRequestResponse(recipientPubkey: string, payload: PaymentRequestResponsePayload): Promise<string>;
|
|
602
649
|
onPaymentRequestResponse(handler: PaymentRequestResponseHandler): () => void;
|
|
603
650
|
resolveNametag(nametag: string): Promise<string | null>;
|
|
651
|
+
resolveNametagInfo(nametag: string): Promise<NametagInfo | null>;
|
|
652
|
+
/**
|
|
653
|
+
* Recover nametag for the current identity by searching for encrypted nametag events
|
|
654
|
+
* Used after wallet import to recover associated nametag
|
|
655
|
+
* @returns Decrypted nametag or null if none found
|
|
656
|
+
*/
|
|
657
|
+
recoverNametag(): Promise<string | null>;
|
|
604
658
|
publishNametag(nametag: string, address: string): Promise<void>;
|
|
605
|
-
registerNametag(nametag: string, _publicKey: string): Promise<boolean>;
|
|
659
|
+
registerNametag(nametag: string, _publicKey: string, directAddress?: string): Promise<boolean>;
|
|
660
|
+
private broadcastSubscriptions;
|
|
606
661
|
subscribeToBroadcast(tags: string[], handler: BroadcastHandler): () => void;
|
|
607
662
|
publishBroadcast(content: string, tags?: string[]): Promise<string>;
|
|
608
663
|
onEvent(callback: TransportEventCallback): () => void;
|
|
609
|
-
private connectToRelay;
|
|
610
|
-
private scheduleReconnect;
|
|
611
|
-
private handleRelayMessage;
|
|
612
664
|
private handleEvent;
|
|
613
665
|
private handleDirectMessage;
|
|
666
|
+
private handleGiftWrap;
|
|
614
667
|
private handleTokenTransfer;
|
|
615
668
|
private handlePaymentRequest;
|
|
616
669
|
private handlePaymentRequestResponse;
|
|
@@ -619,8 +672,8 @@ declare class NostrTransportProvider implements TransportProvider {
|
|
|
619
672
|
private createEncryptedEvent;
|
|
620
673
|
private publishEvent;
|
|
621
674
|
private queryEvents;
|
|
622
|
-
private
|
|
623
|
-
private
|
|
675
|
+
private walletSubscriptionId;
|
|
676
|
+
private chatSubscriptionId;
|
|
624
677
|
private subscribeToEvents;
|
|
625
678
|
private subscribeToTags;
|
|
626
679
|
private decryptContent;
|
|
@@ -787,7 +840,7 @@ type OracleEventCallback = (event: OracleEvent) => void;
|
|
|
787
840
|
* Browser: fetch from URL
|
|
788
841
|
* Node.js: read from file
|
|
789
842
|
*/
|
|
790
|
-
interface TrustBaseLoader {
|
|
843
|
+
interface TrustBaseLoader$1 {
|
|
791
844
|
/**
|
|
792
845
|
* Load trust base JSON data
|
|
793
846
|
* @returns Trust base data or null if not available
|
|
@@ -825,7 +878,7 @@ interface UnicityAggregatorProviderConfig {
|
|
|
825
878
|
/** Enable debug logging */
|
|
826
879
|
debug?: boolean;
|
|
827
880
|
/** Trust base loader (platform-specific) */
|
|
828
|
-
trustBaseLoader?: TrustBaseLoader;
|
|
881
|
+
trustBaseLoader?: TrustBaseLoader$1;
|
|
829
882
|
}
|
|
830
883
|
/**
|
|
831
884
|
* Unicity Aggregator Provider
|
|
@@ -888,32 +941,6 @@ declare const UnicityOracleProvider: typeof UnicityAggregatorProvider;
|
|
|
888
941
|
/** @deprecated Use UnicityAggregatorProviderConfig instead */
|
|
889
942
|
type UnicityOracleProviderConfig = UnicityAggregatorProviderConfig;
|
|
890
943
|
|
|
891
|
-
/**
|
|
892
|
-
* Node.js Oracle Exports
|
|
893
|
-
* Re-exports shared oracle with Node.js-specific TrustBaseLoader
|
|
894
|
-
*/
|
|
895
|
-
|
|
896
|
-
/**
|
|
897
|
-
* Node.js TrustBase loader using fs
|
|
898
|
-
*/
|
|
899
|
-
declare class NodeTrustBaseLoader implements TrustBaseLoader {
|
|
900
|
-
private filePath;
|
|
901
|
-
constructor(filePath?: string);
|
|
902
|
-
load(): Promise<unknown | null>;
|
|
903
|
-
}
|
|
904
|
-
/**
|
|
905
|
-
* Create Node.js TrustBase loader
|
|
906
|
-
*/
|
|
907
|
-
declare function createNodeTrustBaseLoader(filePath?: string): TrustBaseLoader;
|
|
908
|
-
/**
|
|
909
|
-
* Create UnicityAggregatorProvider with Node.js TrustBase loader
|
|
910
|
-
*/
|
|
911
|
-
declare function createUnicityAggregatorProvider(config: Omit<UnicityAggregatorProviderConfig, 'trustBaseLoader'> & {
|
|
912
|
-
trustBasePath?: string;
|
|
913
|
-
}): UnicityAggregatorProvider;
|
|
914
|
-
/** @deprecated Use createUnicityAggregatorProvider instead */
|
|
915
|
-
declare const createUnicityOracleProvider: typeof createUnicityAggregatorProvider;
|
|
916
|
-
|
|
917
944
|
/** Network configurations */
|
|
918
945
|
declare const NETWORKS: {
|
|
919
946
|
readonly mainnet: {
|
|
@@ -940,6 +967,55 @@ declare const NETWORKS: {
|
|
|
940
967
|
};
|
|
941
968
|
type NetworkType = keyof typeof NETWORKS;
|
|
942
969
|
|
|
970
|
+
/**
|
|
971
|
+
* Shared TrustBase Loader Logic
|
|
972
|
+
* Common embedded trustbase data and base loader
|
|
973
|
+
*/
|
|
974
|
+
|
|
975
|
+
interface TrustBaseLoader {
|
|
976
|
+
load(): Promise<unknown | null>;
|
|
977
|
+
}
|
|
978
|
+
/**
|
|
979
|
+
* Base TrustBase loader with embedded fallback
|
|
980
|
+
*/
|
|
981
|
+
declare abstract class BaseTrustBaseLoader implements TrustBaseLoader {
|
|
982
|
+
protected network: NetworkType;
|
|
983
|
+
constructor(network?: NetworkType);
|
|
984
|
+
/**
|
|
985
|
+
* Try to load from external source (file, URL, etc.)
|
|
986
|
+
* Override in subclass
|
|
987
|
+
*/
|
|
988
|
+
protected abstract loadFromExternal(): Promise<unknown | null>;
|
|
989
|
+
load(): Promise<unknown | null>;
|
|
990
|
+
}
|
|
991
|
+
|
|
992
|
+
/**
|
|
993
|
+
* Node.js Oracle Exports
|
|
994
|
+
* Re-exports shared oracle with Node.js-specific TrustBaseLoader
|
|
995
|
+
*/
|
|
996
|
+
|
|
997
|
+
/**
|
|
998
|
+
* Node.js TrustBase loader - loads from file or uses embedded data
|
|
999
|
+
*/
|
|
1000
|
+
declare class NodeTrustBaseLoader extends BaseTrustBaseLoader {
|
|
1001
|
+
private filePath?;
|
|
1002
|
+
constructor(filePathOrNetwork?: string | NetworkType);
|
|
1003
|
+
protected loadFromExternal(): Promise<unknown | null>;
|
|
1004
|
+
}
|
|
1005
|
+
/**
|
|
1006
|
+
* Create Node.js TrustBase loader
|
|
1007
|
+
*/
|
|
1008
|
+
declare function createNodeTrustBaseLoader(filePathOrNetwork?: string | NetworkType): TrustBaseLoader$1;
|
|
1009
|
+
/**
|
|
1010
|
+
* Create UnicityAggregatorProvider with Node.js TrustBase loader
|
|
1011
|
+
*/
|
|
1012
|
+
declare function createUnicityAggregatorProvider(config: Omit<UnicityAggregatorProviderConfig, 'trustBaseLoader'> & {
|
|
1013
|
+
trustBasePath?: string;
|
|
1014
|
+
network?: NetworkType;
|
|
1015
|
+
}): UnicityAggregatorProvider;
|
|
1016
|
+
/** @deprecated Use createUnicityAggregatorProvider instead */
|
|
1017
|
+
declare const createUnicityOracleProvider: typeof createUnicityAggregatorProvider;
|
|
1018
|
+
|
|
943
1019
|
/**
|
|
944
1020
|
* Shared Configuration Interfaces
|
|
945
1021
|
* Base types extended by platform-specific implementations
|
|
@@ -1088,4 +1164,4 @@ interface NodeProviders {
|
|
|
1088
1164
|
*/
|
|
1089
1165
|
declare function createNodeProviders(config?: NodeProvidersConfig): NodeProviders;
|
|
1090
1166
|
|
|
1091
|
-
export { type BaseOracleConfig, type BaseProviders, type BaseTransportConfig, FileStorageProvider, type FileStorageProviderConfig, type FileTokenStorageConfig, FileTokenStorageProvider, type IWebSocket, type L1Config, type NodeL1Config, type NodeOracleConfig, type NodeProviders, type NodeProvidersConfig, type NodeTransportConfig, NodeTrustBaseLoader, NostrTransportProvider, type NostrTransportProviderConfig, type TrustBaseLoader, UnicityAggregatorProvider, type UnicityAggregatorProviderConfig, UnicityOracleProvider, type UnicityOracleProviderConfig, type WebSocketFactory, createFileStorageProvider, createFileTokenStorageProvider, createNodeProviders, createNodeTrustBaseLoader, createNodeWebSocketFactory, createNostrTransportProvider, createUnicityAggregatorProvider, createUnicityOracleProvider };
|
|
1167
|
+
export { type BaseOracleConfig, type BaseProviders, type BaseTransportConfig, FileStorageProvider, type FileStorageProviderConfig, type FileTokenStorageConfig, FileTokenStorageProvider, type IWebSocket, type L1Config, type NodeL1Config, type NodeOracleConfig, type NodeProviders, type NodeProvidersConfig, type NodeTransportConfig, NodeTrustBaseLoader, NostrTransportProvider, type NostrTransportProviderConfig, type TrustBaseLoader$1 as TrustBaseLoader, UnicityAggregatorProvider, type UnicityAggregatorProviderConfig, UnicityOracleProvider, type UnicityOracleProviderConfig, type WebSocketFactory, createFileStorageProvider, createFileTokenStorageProvider, createNodeProviders, createNodeTrustBaseLoader, createNodeWebSocketFactory, createNostrTransportProvider, createUnicityAggregatorProvider, createUnicityOracleProvider };
|