/**
 * Main SDK client for automation-web API
 */
import { AutomationWebConfig } from '../types/common.types';
import { WebhookEvent, WebhookEventHandler, ZaloWebhookEventType } from '../types/webhook.types';
import { Message, Typing, Reaction, SeenMessage, DeliveredMessage, FriendEvent, GroupEvent, Undo } from '../types/webhook';
import { AuthService } from '../services/auth/auth.service';
import { MessagingService } from '../services/messaging/messaging.service';
import { AdvancedMessagingService } from '../services/advanced-messaging/advanced-messaging.service';
import { WebhookService } from '../services/webhook/webhook.service';
import { GroupService } from '../services/groups/groups.service';
import { FriendService } from '../services/friends/friends.service';
import { UserInfoService } from '../services/user-info/user-info.service';
import { ProfileService } from '../services/profile/profile.service';
import { SearchService } from '../services/search/search.service';
/**
 * Main automation-web SDK client
 */
export declare class AutomationWebClient {
    private httpClient;
    private eventManager;
    private config;
    private _auth;
    private _messaging;
    private _advancedMessaging;
    private _webhook;
    private _groups;
    private _friends;
    private _userInfo;
    private _profile;
    private _search;
    constructor(config: Partial<AutomationWebConfig>);
    /**
     * Get authentication service
     */
    get auth(): AuthService;
    /**
     * Get messaging service
     */
    get messaging(): MessagingService;
    /**
     * Get advanced messaging service
     */
    get advancedMessaging(): AdvancedMessagingService;
    /**
     * Get groups service
     */
    get groups(): GroupService;
    /**
     * Get friends service
     */
    get friends(): FriendService;
    /**
     * Get user info service
     */
    get userInfo(): UserInfoService;
    /**
     * Get profile service
     */
    get profile(): ProfileService;
    /**
     * Get webhook service
     */
    get webhook(): WebhookService;
    /**
     * Get search service
     */
    get search(): SearchService;
    /**
     * Register webhook event handler
     */
    onEvent<T extends WebhookEvent = WebhookEvent>(eventType: ZaloWebhookEventType | string, handler: WebhookEventHandler<T>): this;
    /**
     * Register one-time webhook event handler
     */
    onceEvent<T extends WebhookEvent = WebhookEvent>(eventType: ZaloWebhookEventType | string, handler: WebhookEventHandler<T>): this;
    /**
     * Remove webhook event handler
     */
    offEvent<T extends WebhookEvent = WebhookEvent>(eventType: ZaloWebhookEventType | string, handler: WebhookEventHandler<T>): this;
    /**
     * Remove all handlers for event type
     */
    removeAllEventListeners(eventType?: ZaloWebhookEventType | string): this;
    /**
     * Process incoming webhook event
     */
    processWebhookEvent(event: WebhookEvent): Promise<void>;
    /**
     * Convenience methods for common events
     */
    /**
     * Listen for message received events
     */
    onMessageReceived(handler: WebhookEventHandler): this;
    /**
     * Listen for message sent events
     */
    onMessageSent(handler: WebhookEventHandler): this;
    /**
     * Listen for typing events
     */
    onTyping(handler: WebhookEventHandler): this;
    /**
     * Listen for message seen events
     */
    onMessageSeen(handler: WebhookEventHandler): this;
    /**
     * Listen for message reaction events
     */
    onMessageReaction(handler: WebhookEventHandler): this;
    /**
     * Listen for friend events
     */
    onFriendAdded(handler: WebhookEventHandler): this;
    /**
     * Listen for group events
     */
    onGroupMemberAdded(handler: WebhookEventHandler): this;
    /**
     * Listen for connection events
     */
    onConnectionLost(handler: WebhookEventHandler): this;
    /**
     * Listen for error events
     */
    onError(handler: WebhookEventHandler): this;
    /**
     * Listen for typed message events
     */
    onTypedMessage(handler: (message: Message) => void): this;
    /**
     * Listen for typing events
     */
    onTypedTyping(handler: (typing: Typing) => void): this;
    /**
     * Listen for typed reaction events
     */
    onTypedReaction(handler: (reaction: Reaction) => void): this;
    /**
     * Listen for typed seen message events
     */
    onTypedMessageSeen(handler: (seenMessage: SeenMessage) => void): this;
    /**
     * Listen for typed delivered message events
     */
    onTypedMessageDelivered(handler: (deliveredMessage: DeliveredMessage) => void): this;
    /**
     * Listen for typed friend events
     */
    onTypedFriendEvent(handler: (friendEvent: FriendEvent) => void): this;
    /**
     * Listen for typed group events
     */
    onTypedGroupEvent(handler: (groupEvent: GroupEvent) => void): this;
    /**
     * Listen for typed undo events
     */
    onTypedUndo(handler: (undo: Undo) => void): this;
    /**
     * Update SDK configuration
     */
    updateConfig(newConfig: Partial<AutomationWebConfig>): void;
    /**
     * Get current configuration
     */
    getConfig(): AutomationWebConfig;
    /**
     * Get SDK version
     */
    getVersion(): string;
    /**
     * Test connection to automation-web API
     */
    testConnection(): Promise<boolean>;
    /**
     * Get API health status
     */
    getHealthStatus(): Promise<{
        status: 'healthy' | 'unhealthy';
        timestamp: string;
        version?: string;
        uptime?: number;
    }>;
    /**
     * Setup error handling
     */
    private setupErrorHandling;
    /**
     * Cleanup resources
     */
    destroy(): void;
}
//# sourceMappingURL=AutomationWebClient.d.ts.map