import { Platform, PlatformConfig } from './config';
export interface PlatformAdapter {
    readonly platform: Platform;
    connect(): Promise<boolean>;
    disconnect(): Promise<void>;
    send(chatId: string, content: string, replyTo?: string): Promise<SendResult>;
    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>;
    setMessageHandler?(handler: (event: any) => Promise<string | null>): void;
}
export interface SendResult {
    success: boolean;
    messageId?: string;
    error?: string;
}
export interface ChatInfo {
    name: string;
    type: 'dm' | 'group' | 'channel';
}
export interface PlatformEntry {
    name: string;
    label: string;
    factory: (config: PlatformConfig) => PlatformAdapter;
    checkFn?: () => boolean;
    validateConfig?: (config: PlatformConfig) => boolean;
    requiredEnv?: string[];
    installHint?: string;
    emoji?: string;
    maxMessageLength?: number;
}
declare class PlatformRegistry {
    private _entries;
    register(entry: PlatformEntry): void;
    get(name: string): PlatformEntry | undefined;
    createAdapter(platform: Platform, config: PlatformConfig): PlatformAdapter | null;
    getAll(): PlatformEntry[];
    has(name: string): boolean;
}
export declare const platformRegistry: PlatformRegistry;
export {};
//# sourceMappingURL=platform-registry.d.ts.map