import { EventEmitter } from 'events';
import { Platform, PlatformConfig } from '../config';
import { PlatformAdapter, SendResult, ChatInfo } from '../platform-registry';
export declare enum MessageType {
    TEXT = "text",
    PHOTO = "photo",
    VIDEO = "video",
    AUDIO = "audio",
    VOICE = "voice",
    DOCUMENT = "document",
    COMMAND = "command"
}
export interface MessageEvent {
    text: string;
    messageType: MessageType;
    platform: Platform;
    chatId: string;
    chatName?: string;
    chatType: 'dm' | 'group' | 'channel';
    userId?: string;
    userName?: string;
    threadId?: string;
    messageId?: string;
    replyToMessageId?: string;
    mediaUrls?: string[];
    mediaTypes?: string[];
    timestamp?: number;
    rawMessage?: any;
}
export type MessageHandler = (event: MessageEvent) => Promise<string | null>;
export declare abstract class BasePlatformAdapter extends EventEmitter implements PlatformAdapter {
    readonly platform: Platform;
    protected _config: PlatformConfig;
    protected _messageHandler: MessageHandler | null;
    protected _connected: boolean;
    constructor(platform: Platform, config: PlatformConfig);
    get connected(): boolean;
    setMessageHandler(handler: MessageHandler): void;
    abstract connect(): Promise<boolean>;
    abstract disconnect(): Promise<void>;
    abstract send(chatId: string, content: string, replyTo?: string): Promise<SendResult>;
    abstract getChatInfo(chatId: string): Promise<ChatInfo>;
    editMessage(chatId: string, messageId: string, content: string): Promise<SendResult>;
    deleteMessage(chatId: string, messageId: string): Promise<boolean>;
    sendTyping(chatId: string): Promise<void>;
    sendImage(chatId: string, url: string, caption?: string): Promise<SendResult>;
    sendDocument(chatId: string, url: string, filename?: string): Promise<SendResult>;
    protected handleMessage(event: MessageEvent): Promise<void>;
    protected truncateMessage(content: string, maxLength?: number): string[];
}
//# sourceMappingURL=base.d.ts.map