import { default as Long } from 'long';
import { ITelegramClient } from '../../client.types.js';
import { ReplyMarkup } from '../../types/bots/keyboards/index.js';
import { InputMediaLike } from '../../types/media/input-media/types.js';
import { Message } from '../../types/messages/message.js';
import { InputText } from '../../types/misc/entities.js';
import { InputPeerLike } from '../../types/peers/index.js';
import { CommonSendParams } from './send-common.js';
/**
 * Send a single media (a photo or a document-based media)
 *
 * @param chatId  ID of the chat, its username, phone or `"me"` or `"self"`
 * @param media
 *     Media contained in the message. You can also pass TDLib
 *     and Bot API compatible File ID, which will be wrapped
 *     in {@link InputMedia.auto}
 * @param params  Additional sending parameters
 * @link InputMedia
 */
export declare function sendMedia(client: ITelegramClient, chatId: InputPeerLike, media: InputMediaLike | string, params?: CommonSendParams & {
    /** Override the default random ID, for streaming drafts */
    randomId?: Long;
    /**
     * For bots: inline or reply markup or an instruction
     * to hide a reply keyboard or to force a reply.
     */
    replyMarkup?: ReplyMarkup;
    /**
     * Whether to invert media position.
     *
     * Currently only supported for web previews and makes the
     * client render the preview above the caption and not below.
     */
    invert?: boolean;
    /**
     * Override caption for `media`.
     *
     * Can be used, for example. when using File IDs
     * or when using existing InputMedia objects.
     */
    caption?: InputText;
    /**
     * Function that will be called after some part has been uploaded.
     * Only used when a file that requires uploading is passed,
     * and not used when uploading a thumbnail.
     *
     * @param uploaded  Number of bytes already uploaded
     * @param total  Total file size
     */
    progressCallback?: (uploaded: number, total: number) => void;
}): Promise<Message>;
