import { TeleBotFlags, TeleBotOptions, TeleBotPolling, TeleBotRunningInstanceScenario, TelegramFetchErrorScenario } from "./types/telebot";
import { Message, TelegramBotToken, Update, User } from "./types/telegram";
import { TeleBotDev, TeleBotDevOptions } from "./telebot/devkit";
import { TeleBotEvents } from "./telebot/events";
export declare const DEFAULT_POLLING: TeleBotPolling;
export declare const DEFAULT_DEBUG: TeleBotDevOptions;
export declare class TeleBot extends TeleBotEvents {
    private readonly botAPI;
    private readonly botToken;
    private polling;
    private readonly webhook?;
    private lifeIntervalFn;
    private readonly allowedUpdates;
    private readonly debug;
    private flags;
    me: User | undefined;
    runningInstanceScenario: TeleBotRunningInstanceScenario;
    telegramFetchErrorScenario: TelegramFetchErrorScenario;
    dev: TeleBotDev;
    constructor(options: TeleBotOptions | TelegramBotToken);
    getToken(): TelegramBotToken;
    getOptions(): TeleBotOptions;
    start(): Promise<any>;
    restart(): Promise<void>;
    stop(): Promise<void>;
    getFlags(): TeleBotFlags;
    hasFlag<T extends keyof TeleBotFlags>(name: T): boolean;
    setFlag<T extends keyof TeleBotFlags>(name: T): void;
    unsetFlag<T extends keyof TeleBotFlags>(name: T): void;
    private setOffset;
    private startLifeCycle;
    private startLifeInterval;
    private lifeCycle;
    private fetchTelegramUpdates;
    processTelegramUpdates(updates: Update[]): Promise<any[]>;
    private telegramRequest;
    telegramMethod<Response = Message>({ method, required, optional }: {
        method: string;
        required?: any;
        optional?: any;
    }): Promise<Response>;
}
