import type { AnswerOnCallbackExtra, BotCommand, Client, DeleteMessageExtra, EditMessageExtra, FlattenReq, GetUpdatesDTO, SendMessageExtra, Subscription, UpdateType } from './core/network/api';
import { ChatAdmin, GetMessagesExtra, RawApi, SenderAction } from './core/network/api';
import { AddChatAdminsExtra, EditChatExtra, EditCommentExtra, GetAllChatsExtra, GetChatMembersExtra, GetCommentsExtra, PinMessageExtra, SendCommentExtra } from './core/network/api/modules';
import type { MaybeArray } from './core/types';
import { AudioAttachment, FileAttachment, ImageAttachment, VideoAttachment } from './helpers/attachments';
import { Upload } from './helpers/upload';
import type { UploadAudioOptions, UploadFileOptions, UploadImageOptions, UploadVideoOptions } from './helpers/upload';
export declare class Api {
    raw: RawApi;
    upload: Upload;
    constructor(client: Client);
    getMyInfo: () => Promise<import("./core/network/api").BotInfo>;
    setMyCommands: (commands: BotCommand[]) => Promise<import("./core/network/api").EditMyCommandsResponse>;
    deleteMyCommands: () => Promise<import("./core/network/api").EditMyCommandsResponse>;
    getAllChats: (extra?: GetAllChatsExtra) => Promise<import("./core/network/api/modules").GetAllChatsResponse>;
    getChat: (id: number) => Promise<import("./core/network/api").Chat>;
    editChatInfo: (chatId: number, extra: EditChatExtra) => Promise<import("./core/network/api").Chat>;
    sendMessageToChat: (chatId: number, text: string, extra?: SendMessageExtra) => Promise<import("./core/network/api").Message>;
    sendMessageToUser: (userId: number, text: string, extra?: SendMessageExtra) => Promise<import("./core/network/api").Message>;
    getMessages: (chatId: number, { message_ids, ...extra }?: GetMessagesExtra) => Promise<import("./core/network/api").GetMessagesResponse>;
    getMessage: (id: string) => Promise<import("./core/network/api").Message>;
    editMessage: (messageId: string, extra?: EditMessageExtra) => Promise<import("./core/network/api").ActionResponse>;
    deleteMessage: (messageId: string, extra?: DeleteMessageExtra) => Promise<import("./core/network/api").ActionResponse>;
    getVideoInfo: (videoToken: string) => Promise<import("./core/network/api").GetVideoInfoResponse>;
    answerOnCallback: (callbackId: string, extra?: AnswerOnCallbackExtra) => Promise<import("./core/network/api").ActionResponse>;
    getChatMembership: (chatId: number) => Promise<import("./core/network/api").ChatMember>;
    getChatAdmins: (chatId: number) => Promise<import("./core/network/api/modules").GetChatAdminsResponse>;
    addChatAdmins: (chatId: number, admins: ChatAdmin[], extra?: AddChatAdminsExtra) => Promise<import("./core/network/api").ActionResponse>;
    removeChatAdmin: (chatId: number, userId: number) => Promise<import("./core/network/api").ActionResponse>;
    addChatMembers: (chatId: number, userIds: number[]) => Promise<import("./core/network/api/modules").AddChatMembersResponse>;
    getChatMembers: (chatId: number, { user_ids, ...extra }?: GetChatMembersExtra) => Promise<import("./core/network/api/modules").GetChatMembersResponse>;
    removeChatMember: (chatId: number, userId: number) => Promise<import("./core/network/api").ActionResponse>;
    getUpdates: (types?: MaybeArray<UpdateType>, extra?: Omit<FlattenReq<GetUpdatesDTO>, "types">) => Promise<import("./core/network/api").GetUpdatesResponse>;
    getPinnedMessage: (chatId: number) => Promise<import("./core/network/api/modules").GetPinnedMessageResponse>;
    pinMessage: (chatId: number, messageId: string, extra?: PinMessageExtra) => Promise<import("./core/network/api").ActionResponse>;
    unpinMessage: (chatId: number) => Promise<import("./core/network/api").ActionResponse>;
    sendAction: (chatId: number, action: SenderAction) => Promise<import("./core/network/api").ActionResponse>;
    leaveChat: (chatId: number) => Promise<import("./core/network/api").ActionResponse>;
    uploadImage: (options: UploadImageOptions) => Promise<ImageAttachment>;
    uploadVideo: (options: UploadVideoOptions) => Promise<VideoAttachment>;
    uploadAudio: (options: UploadAudioOptions) => Promise<AudioAttachment>;
    uploadFile: (options: UploadFileOptions) => Promise<FileAttachment>;
    getComments: (messageId: string, { comment_ids, ...extra }?: GetCommentsExtra) => Promise<import("./core/network/api/modules").GetCommentsResponse>;
    getComment: (messageId: string, commentId: string) => Promise<import("./core/network/api/modules").CommentMessage>;
    sendComment: (messageId: string, text: string, extra: SendCommentExtra) => Promise<import("./core/network/api/modules").SendCommentResponse>;
    editComment: (message_id: string, comment_id: string, text: string, extra: EditCommentExtra) => Promise<import("./core/network/api").ActionResponse>;
    deleteComment: (messageId: string, comment_id: string) => Promise<import("./core/network/api").ActionResponse>;
    getSubscriptions: () => Promise<Subscription[]>;
    subscribe: (url: string, secret?: string, update_types?: UpdateType[]) => Promise<import("./core/network/api").ActionResponse>;
    unsubscribe: (url: string) => Promise<import("./core/network/api").ActionResponse>;
}
