UNPKG

redai-automation-web-sdk

Version:

TypeScript SDK for RedAI Automation Web API - Zalo Personal automation, messaging, advanced sticker search, and bulk operations. 100% compatible with automation-web backend. v1.8.0: Added SessionProxyService for managing proxy assignments to sessions with

119 lines 3.63 kB
/** * Event handling utility functions */ import { EventEmitter } from 'eventemitter3'; import { WebhookEvent, WebhookEventHandler } from '../types/webhook.types'; /** * Event manager class for handling webhook events */ export declare class EventManager extends EventEmitter { private handlers; /** * Register event handler */ addHandler<T extends WebhookEvent = WebhookEvent>(eventType: string, handler: WebhookEventHandler<T>): this; /** * Register one-time event handler */ addOnceHandler<T extends WebhookEvent = WebhookEvent>(eventType: string, handler: WebhookEventHandler<T>): this; /** * Remove event handler */ removeHandler<T extends WebhookEvent = WebhookEvent>(eventType: string, handler: WebhookEventHandler<T>): this; /** * Remove all handlers for event type */ removeAllListeners(eventType?: string): this; /** * Emit event to all handlers */ emitAsync<T extends WebhookEvent = WebhookEvent>(eventType: string, event: T): Promise<void>; /** * Get registered event types */ getEventTypes(): string[]; /** * Get handler count for event type */ getHandlerCount(eventType: string): number; /** * Check if event type has handlers */ hasHandlers(eventType: string): boolean; } /** * Event utilities class */ export declare class EventUtils { /** * Check if event is a message event */ static isMessageEvent(eventType: string): boolean; /** * Check if event is a group event */ static isGroupEvent(eventType: string): boolean; /** * Check if event is a friend event */ static isFriendEvent(eventType: string): boolean; /** * Check if event is a connection event */ static isConnectionEvent(eventType: string): boolean; /** * Check if event is an error event */ static isErrorEvent(eventType: string): boolean; /** * Extract message type from event type */ static extractMessageType(eventType: string): string | null; /** * Extract direction from event type (sent/received) */ static extractDirection(eventType: string): 'sent' | 'received' | null; /** * Extract target type from event type (user/group) */ static extractTargetType(eventType: string): 'user' | 'group' | null; /** * Normalize event type */ static normalizeEventType(eventType: string): string; /** * Create event filter function */ static createEventFilter(criteria: { messageTypes?: string[]; directions?: ('sent' | 'received')[]; targetTypes?: ('user' | 'group')[]; sessionIds?: string[]; userUuids?: string[]; }): (event: WebhookEvent) => boolean; /** * Debounce function for event handling */ static debounce<T extends any[]>(func: (...args: T) => void, delay: number): (...args: T) => void; /** * Throttle function for event handling */ static throttle<T extends any[]>(func: (...args: T) => void, delay: number): (...args: T) => void; /** * Create rate limiter for events */ static createRateLimiter(maxEvents: number, windowMs: number): { canProcess(): boolean; getRemainingEvents(): number; getResetTime(): number; }; /** * Create event aggregator */ static createEventAggregator<T>(windowMs: number, processor: (events: T[]) => void): { add(event: T): void; flush(): void; getQueuedCount(): number; }; } //# sourceMappingURL=event.utils.d.ts.map