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
TypeScript
/**
* 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