import type { Adapter } from './adapter';
import type { Message, MessageMapping } from '../types';
/**
 * Elements handler base class.
 *
 * @abstract
 */
export declare abstract class Elements {
    /**
     * Adapter instance.
     *
     * @readonly
     */
    readonly adapter: Adapter<any, any, any>;
    /**
     * Decode a elements handler.
     *
     * @param adapter - Adapter instance
     */
    constructor(adapter: Adapter<any, any, any>);
    /**
     * Encode raw message string to `Message`.
     *
     * @param raw - Raw message
     * @param meta - Message metadata
     * @returns Encoded message
     *
     * @abstract
     */
    abstract encode(raw: string, meta?: object): Message;
    /**
     * Decode `Message` elements to string.
     *
     * @param message - Message to decode
     * @param meta - Message metadata
     * @returns Decoded message
     *
     * @abstract
     */
    abstract decode(message: Message, meta?: object): string;
    /**
     * Decode a mention message.
     *
     * @param userId - User id
     * @param meta - Message metadata
     * @returns Mention message
     *
     * @deprecated
     */
    mention(userId: string, meta?: object): string;
    /**
     * Decode a mention all message.
     *
     * @param meta - Message metadata
     * @returns Mention all message
     *
     * @deprecated
     */
    mentionAll(meta?: object): string;
    /**
     * Decode an image message.
     *
     * @param content - Image content
     * @param meta - Message metadata
     * @returns Image message
     *
     * @deprecated
     */
    image(content: string, meta?: object): string;
    /**
     * Decode a voice message.
     *
     * @param content - Voice content
     * @param meta - Message metadata
     * @returns Voice message
     *
     * @deprecated
     */
    voice(content: string, meta?: object): string;
    /**
     * Decode an audio message.
     *
     * @param content - Audio content
     * @param meta - Message metadata
     * @returns Audio message
     *
     * @deprecated
     */
    audio(content: string, meta?: object): string;
    /**
     * Decode a video message.
     *
     * @param content - Video content
     * @param meta - Message metadata
     * @returns Video message
     *
     * @deprecated
     */
    video(content: string, meta?: object): string;
    /**
     * Decode a file message.
     *
     * @param content - File content
     * @param meta - Message metadata
     * @returns File message
     *
     * @deprecated
     */
    file(content: string, meta?: object): string;
    /**
     * Decode a location message.
     *
     * @param latitude - Latitude
     * @param longitude - Longitude
     * @param title - Title
     * @param content - Content
     * @param meta - Message metadata
     * @returns Location message
     *
     * @deprecated
     */
    location(latitude: number, longitude: number, title: string, content: string, meta?: object): string;
    /**
     * Decode a reply message.
     *
     * @param messageId - Message id
     * @param meta - Message metadata
     * @returns Reply message
     *
     * @deprecated
     */
    reply(messageId: string, meta?: object): string;
    /**
     * Get supported elements.
     *
     * @returns Supported elements
     *
     * @abstract
     *
     * @deprecated
     */
    abstract getSupportsElements(): (keyof MessageMapping)[];
}
export default Elements;
