import { ITelegramClient } from '../../client.types.js';
import { InputMediaLike, InputPeerLike, MessageMedia, RawDocument, Photo } from '../../types/index.js';
/**
 * Upload a media to Telegram servers, without actually
 * sending a message anywhere. Useful when File ID is needed.
 *
 * The difference with {@link uploadFile} is that
 * the returned object will act like a message media
 * and contain fields like File ID.
 *
 * @param media  Media to upload
 * @param params  Upload parameters
 */
export declare function uploadMedia(client: ITelegramClient, media: InputMediaLike, params?: {
    /**
     * Peer to associate this media with.
     *
     * @default  `self`
     */
    peer?: InputPeerLike;
    /**
     * Upload progress callback
     *
     * @param uploaded  Number of bytes uploaded
     * @param total  Total file size
     */
    progressCallback?: (uploaded: number, total: number) => void;
}): Promise<Extract<MessageMedia, Photo | RawDocument>>;
