ws402
Version:
WebSocket implementation of X402 protocol for pay-as-you-go digital resources with automatic refunds
55 lines (54 loc) • 1.6 kB
TypeScript
import WebSocket from 'ws';
import { EventEmitter } from 'events';
import { WS402Config, WS402Session, PaymentProvider, WS402Schema } from './types';
/**
* WS402 - WebSocket implementation of X402 protocol
* Enables pay-as-you-go pricing for WebSocket resources with automatic refunds
*/
export declare class WS402 extends EventEmitter {
private sessions;
private config;
private paymentProvider;
constructor(config: WS402Config, paymentProvider: PaymentProvider);
/**
* Attach WS402 to a WebSocket server
*/
attach(wss: WebSocket.Server): Map<string, WebSocket>;
/**
* Generate WS402 schema for initial HTTP response
* @param pricePerSecond - Optional custom price per second, uses config default if not provided
*/
generateSchema(resourceId: string, estimatedDuration: number, pricePerSecond?: number): WS402Schema;
/**
* Handle new WebSocket connection
*/
private handleConnection;
/**
* Wait for client to send payment proof
*/
private waitForPaymentProof;
/**
* Update session usage and check limits
*/
private updateUsage;
/**
* End session and issue refund
*/
private endSession;
/**
* Get active session by user ID
*/
getSessionByUserId(userId: string): WS402Session | null;
/**
* Get all active sessions
*/
getActiveSessions(): WS402Session[];
/**
* Default user ID extractor from request
*/
private defaultUserIdExtractor;
/**
* Generate unique session ID
*/
private generateSessionId;
}