/**
 * Discord Channel Client
 *
 * Discord bot implementation using the Discord API.
 * Supports messages, slash commands, and interactions.
 */
import type { DiscordConfig, DiscordEmbed, DiscordActionRow } from './types.js';
import type { OutboundMessage, DeliveryResult } from '../index.js';
import { BaseChannel } from '../index.js';
/**
 * Discord channel implementation
 */
export declare class DiscordChannel extends BaseChannel {
    private ws;
    private heartbeatInterval;
    private lastSequence;
    private sessionId;
    private resumeGatewayUrl;
    private botUser;
    private reconnecting;
    private reconnectionManager;
    constructor(config: DiscordConfig);
    private get discordConfig();
    /**
     * Make API request to Discord
     */
    private apiRequest;
    /**
     * Calculate intents bitmask
     */
    private getIntents;
    /**
     * Connect to Discord
     */
    connect(): Promise<void>;
    /**
     * Handle gateway messages
     */
    private handleGatewayMessage;
    /**
     * Handle HELLO (start heartbeat and identify)
     */
    private handleHello;
    /**
     * Send heartbeat
     */
    private sendHeartbeat;
    /**
     * Send identify
     */
    private sendIdentify;
    /**
     * Send resume
     */
    private sendResume;
    /**
     * Handle invalid session
     */
    private handleInvalidSession;
    /**
     * Handle connection close
     */
    private handleClose;
    /**
     * Reconnect to gateway using ReconnectionManager for backoff
     */
    private reconnect;
    /**
     * Handle dispatch events
     */
    private handleDispatch;
    /**
     * Handle READY event
     */
    private handleReady;
    /**
     * Register slash commands
     */
    private registerCommands;
    /**
     * Handle message create
     */
    private handleMessageCreate;
    /**
     * Handle interaction (slash command, button, etc.)
     */
    private handleInteraction;
    /**
     * Respond to interaction
     */
    respondToInteraction(interactionId: string, interactionToken: string, content: string, options?: {
        ephemeral?: boolean;
        embeds?: DiscordEmbed[];
    }): Promise<void>;
    /**
     * Defer interaction response
     */
    deferInteraction(interactionId: string, interactionToken: string): Promise<void>;
    /**
     * Edit deferred interaction response
     */
    editInteractionResponse(applicationId: string, interactionToken: string, content: string, options?: {
        embeds?: DiscordEmbed[];
        components?: DiscordActionRow[];
    }): Promise<void>;
    /**
     * Disconnect from Discord
     */
    disconnect(): Promise<void>;
    /**
     * Send a message
     */
    send(message: OutboundMessage): Promise<DeliveryResult>;
    /**
     * Convert Discord message to InboundMessage
     */
    private convertMessage;
    /**
     * Convert Discord user to ChannelUser
     */
    private convertUser;
    /**
     * Convert Discord attachment to MessageAttachment
     */
    private convertAttachment;
    /**
     * Get attachment type from content type
     */
    private getAttachmentType;
    /**
     * Determine content type from message
     */
    private determineContentType;
    /**
     * Get activity type number
     */
    private getActivityType;
    /**
     * Get command option type number
     */
    private getOptionType;
    /**
     * Build action row from buttons
     */
    private buildActionRow;
    /**
     * Send typing indicator
     */
    sendTyping(channelId: string): Promise<void>;
    /**
     * Edit a message
     */
    editMessage(channelId: string, messageId: string, content: string): Promise<void>;
    /**
     * Delete a message
     */
    deleteMessage(channelId: string, messageId: string): Promise<void>;
    /**
     * Add reaction to message
     */
    addReaction(channelId: string, messageId: string, emoji: string): Promise<void>;
}
export default DiscordChannel;
