@unicitylabs/sphere-sdk 0.2.3 → 0.2.5

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.
@@ -177,7 +177,7 @@ interface TokenStorageProvider<TData = unknown> extends BaseProvider {
177
177
  */
178
178
  deleteToken?(tokenId: string): Promise<void>;
179
179
  }
180
- type StorageEventType = 'storage:saving' | 'storage:saved' | 'storage:loading' | 'storage:loaded' | 'storage:error' | 'sync:started' | 'sync:completed' | 'sync:conflict' | 'sync:error';
180
+ type StorageEventType = 'storage:saving' | 'storage:saved' | 'storage:loading' | 'storage:loaded' | 'storage:error' | 'storage:remote-updated' | 'sync:started' | 'sync:completed' | 'sync:conflict' | 'sync:error';
181
181
  interface StorageEvent {
182
182
  type: StorageEventType;
183
183
  timestamp: number;
@@ -470,6 +470,12 @@ interface TransportProvider extends BaseProvider {
470
470
  * @returns Unsubscribe function
471
471
  */
472
472
  onInstantSplitReceived?(handler: InstantSplitBundleHandler): () => void;
473
+ /**
474
+ * Fetch pending events from transport (one-shot query).
475
+ * Creates a temporary subscription, processes events through normal handlers,
476
+ * and resolves after EOSE (End Of Stored Events).
477
+ */
478
+ fetchPendingEvents?(): Promise<void>;
473
479
  }
474
480
  /**
475
481
  * Payload for sending instant split bundles
@@ -534,7 +540,7 @@ interface IncomingTokenTransfer {
534
540
  payload: TokenTransferPayload;
535
541
  timestamp: number;
536
542
  }
537
- type TokenTransferHandler = (transfer: IncomingTokenTransfer) => void;
543
+ type TokenTransferHandler = (transfer: IncomingTokenTransfer) => void | Promise<void>;
538
544
  interface PaymentRequestPayload {
539
545
  /** Amount requested (in smallest units) */
540
546
  amount: string | bigint;
@@ -719,6 +725,7 @@ declare class NostrTransportProvider implements TransportProvider {
719
725
  private status;
720
726
  private nostrClient;
721
727
  private mainSubscriptionId;
728
+ private processedEventIds;
722
729
  private messageHandlers;
723
730
  private transferHandlers;
724
731
  private paymentRequestHandlers;
@@ -830,6 +837,7 @@ declare class NostrTransportProvider implements TransportProvider {
830
837
  private createEvent;
831
838
  private createEncryptedEvent;
832
839
  private publishEvent;
840
+ fetchPendingEvents(): Promise<void>;
833
841
  private queryEvents;
834
842
  private walletSubscriptionId;
835
843
  private chatSubscriptionId;
@@ -1322,6 +1330,42 @@ interface BaseProviders {
1322
1330
  price?: PriceProvider;
1323
1331
  }
1324
1332
 
1333
+ /** IPFS storage provider configuration */
1334
+ interface IpfsStorageConfig {
1335
+ /** Gateway URLs for HTTP API (defaults to Unicity dedicated nodes) */
1336
+ gateways?: string[];
1337
+ /** Content fetch timeout in ms (default: 15000) */
1338
+ fetchTimeoutMs?: number;
1339
+ /** IPNS resolution timeout in ms (default: 10000) */
1340
+ resolveTimeoutMs?: number;
1341
+ /** IPNS publish timeout in ms (default: 30000) */
1342
+ publishTimeoutMs?: number;
1343
+ /** Gateway connectivity test timeout in ms (default: 5000) */
1344
+ connectivityTimeoutMs?: number;
1345
+ /** IPNS record lifetime in ms (default: 99 years) */
1346
+ ipnsLifetimeMs?: number;
1347
+ /** IPNS cache TTL in ms (default: 60000) */
1348
+ ipnsCacheTtlMs?: number;
1349
+ /** Circuit breaker failure threshold (default: 3) */
1350
+ circuitBreakerThreshold?: number;
1351
+ /** Circuit breaker cooldown in ms (default: 60000) */
1352
+ circuitBreakerCooldownMs?: number;
1353
+ /** Known-fresh window in ms (default: 30000) */
1354
+ knownFreshWindowMs?: number;
1355
+ /** Enable debug logging (default: false) */
1356
+ debug?: boolean;
1357
+ /** WebSocket factory for IPNS push subscriptions (cross-platform) */
1358
+ createWebSocket?: WebSocketFactory;
1359
+ /** Override WebSocket URL (auto-derived from gateways if omitted) */
1360
+ wsUrl?: string;
1361
+ /** Fallback polling interval in ms when WS unavailable (default: 90000) */
1362
+ fallbackPollIntervalMs?: number;
1363
+ /** Debounce for push-triggered sync in ms (default: 500) */
1364
+ syncDebounceMs?: number;
1365
+ /** Debounce interval for background flush in ms (default: 2000) */
1366
+ flushDebounceMs?: number;
1367
+ }
1368
+
1325
1369
  /**
1326
1370
  * Node.js Implementation
1327
1371
  * Providers for CLI/Node.js usage
@@ -1342,6 +1386,18 @@ type NodeOracleConfig = BaseOracleConfig & NodeOracleExtensions;
1342
1386
  * Same as base
1343
1387
  */
1344
1388
  type NodeL1Config = L1Config;
1389
+ /** Node.js IPFS sync configuration */
1390
+ interface NodeIpfsSyncConfig {
1391
+ /** Enable IPFS sync (default: false) */
1392
+ enabled?: boolean;
1393
+ /** IPFS storage provider configuration */
1394
+ config?: IpfsStorageConfig;
1395
+ }
1396
+ /** Node.js token sync configuration */
1397
+ interface NodeTokenSyncConfig {
1398
+ /** IPFS sync backend */
1399
+ ipfs?: NodeIpfsSyncConfig;
1400
+ }
1345
1401
  interface NodeProvidersConfig {
1346
1402
  /** Network preset: mainnet, testnet, or dev */
1347
1403
  network?: NetworkType;
@@ -1357,6 +1413,8 @@ interface NodeProvidersConfig {
1357
1413
  l1?: NodeL1Config;
1358
1414
  /** Price provider configuration (optional — enables fiat value display) */
1359
1415
  price?: BasePriceConfig;
1416
+ /** Token sync backends configuration */
1417
+ tokenSync?: NodeTokenSyncConfig;
1360
1418
  }
1361
1419
  interface NodeProviders {
1362
1420
  storage: StorageProvider;
@@ -1367,6 +1425,8 @@ interface NodeProviders {
1367
1425
  l1?: L1Config;
1368
1426
  /** Price provider (optional — enables fiat value display) */
1369
1427
  price?: PriceProvider;
1428
+ /** IPFS token storage provider (when tokenSync.ipfs.enabled is true) */
1429
+ ipfsTokenStorage?: TokenStorageProvider<TxfStorageDataBase>;
1370
1430
  }
1371
1431
  /**
1372
1432
  * Create all Node.js providers with default configuration
@@ -1406,4 +1466,4 @@ interface NodeProviders {
1406
1466
  */
1407
1467
  declare function createNodeProviders(config?: NodeProvidersConfig): NodeProviders;
1408
1468
 
1409
- 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 };
1469
+ export { type BaseOracleConfig, type BaseProviders, type BaseTransportConfig, FileStorageProvider, type FileStorageProviderConfig, type FileTokenStorageConfig, FileTokenStorageProvider, type IWebSocket, type L1Config, type NodeIpfsSyncConfig, type NodeL1Config, type NodeOracleConfig, type NodeProviders, type NodeProvidersConfig, type NodeTokenSyncConfig, 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 };
@@ -177,7 +177,7 @@ interface TokenStorageProvider<TData = unknown> extends BaseProvider {
177
177
  */
178
178
  deleteToken?(tokenId: string): Promise<void>;
179
179
  }
180
- type StorageEventType = 'storage:saving' | 'storage:saved' | 'storage:loading' | 'storage:loaded' | 'storage:error' | 'sync:started' | 'sync:completed' | 'sync:conflict' | 'sync:error';
180
+ type StorageEventType = 'storage:saving' | 'storage:saved' | 'storage:loading' | 'storage:loaded' | 'storage:error' | 'storage:remote-updated' | 'sync:started' | 'sync:completed' | 'sync:conflict' | 'sync:error';
181
181
  interface StorageEvent {
182
182
  type: StorageEventType;
183
183
  timestamp: number;
@@ -470,6 +470,12 @@ interface TransportProvider extends BaseProvider {
470
470
  * @returns Unsubscribe function
471
471
  */
472
472
  onInstantSplitReceived?(handler: InstantSplitBundleHandler): () => void;
473
+ /**
474
+ * Fetch pending events from transport (one-shot query).
475
+ * Creates a temporary subscription, processes events through normal handlers,
476
+ * and resolves after EOSE (End Of Stored Events).
477
+ */
478
+ fetchPendingEvents?(): Promise<void>;
473
479
  }
474
480
  /**
475
481
  * Payload for sending instant split bundles
@@ -534,7 +540,7 @@ interface IncomingTokenTransfer {
534
540
  payload: TokenTransferPayload;
535
541
  timestamp: number;
536
542
  }
537
- type TokenTransferHandler = (transfer: IncomingTokenTransfer) => void;
543
+ type TokenTransferHandler = (transfer: IncomingTokenTransfer) => void | Promise<void>;
538
544
  interface PaymentRequestPayload {
539
545
  /** Amount requested (in smallest units) */
540
546
  amount: string | bigint;
@@ -719,6 +725,7 @@ declare class NostrTransportProvider implements TransportProvider {
719
725
  private status;
720
726
  private nostrClient;
721
727
  private mainSubscriptionId;
728
+ private processedEventIds;
722
729
  private messageHandlers;
723
730
  private transferHandlers;
724
731
  private paymentRequestHandlers;
@@ -830,6 +837,7 @@ declare class NostrTransportProvider implements TransportProvider {
830
837
  private createEvent;
831
838
  private createEncryptedEvent;
832
839
  private publishEvent;
840
+ fetchPendingEvents(): Promise<void>;
833
841
  private queryEvents;
834
842
  private walletSubscriptionId;
835
843
  private chatSubscriptionId;
@@ -1322,6 +1330,42 @@ interface BaseProviders {
1322
1330
  price?: PriceProvider;
1323
1331
  }
1324
1332
 
1333
+ /** IPFS storage provider configuration */
1334
+ interface IpfsStorageConfig {
1335
+ /** Gateway URLs for HTTP API (defaults to Unicity dedicated nodes) */
1336
+ gateways?: string[];
1337
+ /** Content fetch timeout in ms (default: 15000) */
1338
+ fetchTimeoutMs?: number;
1339
+ /** IPNS resolution timeout in ms (default: 10000) */
1340
+ resolveTimeoutMs?: number;
1341
+ /** IPNS publish timeout in ms (default: 30000) */
1342
+ publishTimeoutMs?: number;
1343
+ /** Gateway connectivity test timeout in ms (default: 5000) */
1344
+ connectivityTimeoutMs?: number;
1345
+ /** IPNS record lifetime in ms (default: 99 years) */
1346
+ ipnsLifetimeMs?: number;
1347
+ /** IPNS cache TTL in ms (default: 60000) */
1348
+ ipnsCacheTtlMs?: number;
1349
+ /** Circuit breaker failure threshold (default: 3) */
1350
+ circuitBreakerThreshold?: number;
1351
+ /** Circuit breaker cooldown in ms (default: 60000) */
1352
+ circuitBreakerCooldownMs?: number;
1353
+ /** Known-fresh window in ms (default: 30000) */
1354
+ knownFreshWindowMs?: number;
1355
+ /** Enable debug logging (default: false) */
1356
+ debug?: boolean;
1357
+ /** WebSocket factory for IPNS push subscriptions (cross-platform) */
1358
+ createWebSocket?: WebSocketFactory;
1359
+ /** Override WebSocket URL (auto-derived from gateways if omitted) */
1360
+ wsUrl?: string;
1361
+ /** Fallback polling interval in ms when WS unavailable (default: 90000) */
1362
+ fallbackPollIntervalMs?: number;
1363
+ /** Debounce for push-triggered sync in ms (default: 500) */
1364
+ syncDebounceMs?: number;
1365
+ /** Debounce interval for background flush in ms (default: 2000) */
1366
+ flushDebounceMs?: number;
1367
+ }
1368
+
1325
1369
  /**
1326
1370
  * Node.js Implementation
1327
1371
  * Providers for CLI/Node.js usage
@@ -1342,6 +1386,18 @@ type NodeOracleConfig = BaseOracleConfig & NodeOracleExtensions;
1342
1386
  * Same as base
1343
1387
  */
1344
1388
  type NodeL1Config = L1Config;
1389
+ /** Node.js IPFS sync configuration */
1390
+ interface NodeIpfsSyncConfig {
1391
+ /** Enable IPFS sync (default: false) */
1392
+ enabled?: boolean;
1393
+ /** IPFS storage provider configuration */
1394
+ config?: IpfsStorageConfig;
1395
+ }
1396
+ /** Node.js token sync configuration */
1397
+ interface NodeTokenSyncConfig {
1398
+ /** IPFS sync backend */
1399
+ ipfs?: NodeIpfsSyncConfig;
1400
+ }
1345
1401
  interface NodeProvidersConfig {
1346
1402
  /** Network preset: mainnet, testnet, or dev */
1347
1403
  network?: NetworkType;
@@ -1357,6 +1413,8 @@ interface NodeProvidersConfig {
1357
1413
  l1?: NodeL1Config;
1358
1414
  /** Price provider configuration (optional — enables fiat value display) */
1359
1415
  price?: BasePriceConfig;
1416
+ /** Token sync backends configuration */
1417
+ tokenSync?: NodeTokenSyncConfig;
1360
1418
  }
1361
1419
  interface NodeProviders {
1362
1420
  storage: StorageProvider;
@@ -1367,6 +1425,8 @@ interface NodeProviders {
1367
1425
  l1?: L1Config;
1368
1426
  /** Price provider (optional — enables fiat value display) */
1369
1427
  price?: PriceProvider;
1428
+ /** IPFS token storage provider (when tokenSync.ipfs.enabled is true) */
1429
+ ipfsTokenStorage?: TokenStorageProvider<TxfStorageDataBase>;
1370
1430
  }
1371
1431
  /**
1372
1432
  * Create all Node.js providers with default configuration
@@ -1406,4 +1466,4 @@ interface NodeProviders {
1406
1466
  */
1407
1467
  declare function createNodeProviders(config?: NodeProvidersConfig): NodeProviders;
1408
1468
 
1409
- 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 };
1469
+ export { type BaseOracleConfig, type BaseProviders, type BaseTransportConfig, FileStorageProvider, type FileStorageProviderConfig, type FileTokenStorageConfig, FileTokenStorageProvider, type IWebSocket, type L1Config, type NodeIpfsSyncConfig, type NodeL1Config, type NodeOracleConfig, type NodeProviders, type NodeProvidersConfig, type NodeTokenSyncConfig, 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 };