import * as _whiskeysockets_baileys from '@whiskeysockets/baileys';
import _whiskeysockets_baileys__default, { GroupParticipant, GroupMetadata, ParticipantAction, BinaryNode, proto, AnyMessageContent, MiscMessageGenerationOptions, WAProto, DownloadableMessage, MediaType, MediaDownloadOptions, MessageGenerationOptionsFromContent, AnyMediaMessageContent, MediaGenerationOptions, getContentType, downloadContentFromMessage, WAMessage, Contact, WABrowserDescription } from '@whiskeysockets/baileys';
export { Browsers, fetchLatestWaWebVersion } from '@whiskeysockets/baileys';
import { AuthenticationState, WABrowserDescription as WABrowserDescription$1 } from '@whiskeysockets/baileys/lib/Types';
import EventEmitter$1, { EventEmitter } from 'events';
import { Collection } from '@discordjs/collection';
import * as stream from 'stream';
import consolefy from '@mengkodingan/consolefy';

declare class Collector extends EventEmitter {
    [x: string]: any;
    isRun: any;
    filter: (args: any, collector: Collection<any, any>) => boolean;
    time: number;
    max?: number;
    maxProcessed?: number;
    collector: Collection<unknown, unknown>;
    received: any;
    constructor(options?: ICollectorOptions);
    collect(t: IMessageInfo): Promise<void>;
    stop(r?: any): void;
}

declare class MessageCollector extends Collector {
    constructor(clientReq: {
        self: any;
        msg: any;
    }, options?: ICollectorOptions);
    _collect(msg: IMessageInfo): IMessageCollectorCollect | null;
}

declare class GroupData {
    ctx: Ctx;
    jid: string;
    constructor(ctx: Ctx, jid: string);
    members(): Promise<GroupParticipant[]>;
    inviteCode(): Promise<string | undefined>;
    revokeInviteCode(): Promise<string | undefined>;
    joinApproval(mode: "on" | "off"): Promise<void>;
    leave(): Promise<void>;
    membersCanAddMemberMode(mode: "on" | "off"): Promise<void>;
    metadata(): Promise<GroupMetadata>;
    getMetadata(key: keyof GroupMetadata): Promise<string | number | boolean | GroupParticipant[] | undefined>;
    name(): Promise<string | number | boolean | GroupParticipant[] | undefined>;
    description(): Promise<string | number | boolean | GroupParticipant[] | undefined>;
    owner(): Promise<string | number | boolean | GroupParticipant[] | undefined>;
    isAdmin(jid: string): Promise<boolean>;
    isSenderAdmin(): Promise<boolean>;
    isBotAdmin(): Promise<boolean>;
    toggleEphemeral(expiration: number): Promise<void>;
    updateDescription(description?: string): Promise<void>;
    updateSubject(subject: string): Promise<void>;
    membersUpdate(members: string[], action: ParticipantAction): Promise<{
        status: string;
        jid: string | undefined;
        content: BinaryNode;
    }[]>;
    kick(members: string[]): Promise<{
        status: string;
        jid: string | undefined;
        content: BinaryNode;
    }[]>;
    add(members: string[]): Promise<{
        status: string;
        jid: string | undefined;
        content: BinaryNode;
    }[]>;
    promote(members: string[]): Promise<{
        status: string;
        jid: string | undefined;
        content: BinaryNode;
    }[]>;
    demote(members: string[]): Promise<{
        status: string;
        jid: string | undefined;
        content: BinaryNode;
    }[]>;
    pendingMembers(): Promise<{
        [key: string]: string;
    }[]>;
    pendingMembersUpdate(members: string[], action: 'reject' | 'approve'): Promise<{
        status: string;
        jid: string | undefined;
    }[]>;
    approvePendingMembers(members: string[]): Promise<{
        status: string;
        jid: string | undefined;
    }[]>;
    rejectPendingMembers(members: string[]): Promise<{
        status: string;
        jid: string | undefined;
    }[]>;
    updateSetting(setting: 'announcement' | 'not_announcement' | 'locked' | 'unlocked'): Promise<void>;
    open(): Promise<void>;
    close(): Promise<void>;
    lock(): Promise<void>;
    unlock(): Promise<void>;
}

declare class Group {
    ctx: ICtx;
    constructor(ctx: ICtx);
    create(subject: string, members: string[]): Promise<GroupMetadata>;
    inviteCodeInfo(code: string): Promise<GroupMetadata>;
    acceptInvite(code: string): Promise<string | undefined>;
    acceptInviteV4(key: string | proto.IMessageKey, inviteMessage: proto.Message.IGroupInviteMessage): Promise<string>;
}

declare class Ctx implements ICtx {
    _used: {
        prefix?: Array<string> | string;
        command?: string;
        upsert?: any;
        hears?: any;
        poll?: any;
        pollVote?: any;
        reactions?: any;
    };
    _args: string[];
    _self: ICtxSelf;
    _client: ReturnType<typeof _whiskeysockets_baileys__default>;
    _msg: IMessageInfo;
    _sender: {
        jid: string | null | undefined;
        decodedJid: string | null | undefined;
        pushName: string | null | undefined;
    };
    _config: {
        prefix: string | RegExp | string[];
        cmd: Collection<number | ICommandOptions, any> | undefined;
    };
    constructor(options: ICtxOptions);
    get id(): string | null | undefined;
    get used(): {
        prefix?: string | string[] | undefined;
        command?: string | undefined;
        upsert?: any;
        hears?: any;
        poll?: any;
        pollVote?: any;
        reactions?: any;
    };
    get bot(): ICtxSelf;
    get me(): IMe;
    get core(): ReturnType<typeof _whiskeysockets_baileys__default>;
    get decodedId(): string | null | undefined;
    get args(): Array<string>;
    get msg(): IMessageInfo & {
        media: {
            toBuffer: () => Promise<Buffer | stream.Transform | null>;
            toStream: () => Promise<Buffer | stream.Transform | null>;
        };
    };
    get sender(): {
        jid: string | null | undefined;
        decodedJid: string | null | undefined;
        pushName: string | null | undefined;
    };
    sendMessage(jid: string, content: AnyMessageContent, options?: MiscMessageGenerationOptions): Promise<_whiskeysockets_baileys.WAMessage | undefined>;
    reply(content: AnyMessageContent | string, options?: MiscMessageGenerationOptions): Promise<_whiskeysockets_baileys.WAMessage | undefined>;
    replyWithJid(jid: string, content: AnyMessageContent, options?: MiscMessageGenerationOptions): Promise<_whiskeysockets_baileys.WAMessage | undefined>;
    react(jid: string, emoji: string, key?: WAProto.IMessageKey): Promise<_whiskeysockets_baileys.WAMessage | undefined>;
    MessageCollector(args?: ICollectorOptions): MessageCollector;
    awaitMessages(args?: ICollectorOptions): Promise<unknown>;
    getMessageType(): keyof WAProto.IMessage | undefined;
    getMediaMessage(msg: IMessageInfo, type: 'buffer' | 'stream'): Promise<Buffer | stream.Transform | null>;
    read(): void;
    simulateTyping(): void;
    deleteMessage(key: WAProto.IMessageKey): Promise<_whiskeysockets_baileys.WAMessage | undefined>;
    simulateRecording(): void;
    editMessage(key: WAProto.IMessageKey, newText: string): Promise<_whiskeysockets_baileys.WAMessage | undefined>;
    sendPoll(jid: string, args: {
        name: string;
        values: Array<string>;
        singleSelect: boolean;
        selectableCount?: boolean;
    }): Promise<_whiskeysockets_baileys.WAMessage | undefined>;
    getMentioned(): string[] | null | undefined;
    getDevice(id: string | undefined): "web" | "unknown" | "android" | "ios" | "desktop";
    isGroup(): boolean | undefined;
    block(jid?: string): Promise<void>;
    unblock(jid?: string): Promise<void>;
    get groups(): Group;
    group(jid?: string): GroupData;
    get quoted(): {
        senderJid: string | null | undefined;
        decodedSenderJid: string;
        media: {
            toBuffer: () => Promise<Buffer | null>;
            toStream: () => Promise<stream.Transform | null>;
        };
        conversation?: string | null | undefined;
        senderKeyDistributionMessage?: proto.Message.ISenderKeyDistributionMessage | null | undefined;
        imageMessage?: proto.Message.IImageMessage | null | undefined;
        contactMessage?: proto.Message.IContactMessage | null | undefined;
        locationMessage?: proto.Message.ILocationMessage | null | undefined;
        extendedTextMessage?: proto.Message.IExtendedTextMessage | null | undefined;
        documentMessage?: proto.Message.IDocumentMessage | null | undefined;
        audioMessage?: proto.Message.IAudioMessage | null | undefined;
        videoMessage?: proto.Message.IVideoMessage | null | undefined;
        call?: proto.Message.ICall | null | undefined;
        chat?: proto.Message.IChat | null | undefined;
        protocolMessage?: proto.Message.IProtocolMessage | null | undefined;
        contactsArrayMessage?: proto.Message.IContactsArrayMessage | null | undefined;
        highlyStructuredMessage?: proto.Message.IHighlyStructuredMessage | null | undefined;
        fastRatchetKeySenderKeyDistributionMessage?: proto.Message.ISenderKeyDistributionMessage | null | undefined;
        sendPaymentMessage?: proto.Message.ISendPaymentMessage | null | undefined;
        liveLocationMessage?: proto.Message.ILiveLocationMessage | null | undefined;
        requestPaymentMessage?: proto.Message.IRequestPaymentMessage | null | undefined;
        declinePaymentRequestMessage?: proto.Message.IDeclinePaymentRequestMessage | null | undefined;
        cancelPaymentRequestMessage?: proto.Message.ICancelPaymentRequestMessage | null | undefined;
        templateMessage?: proto.Message.ITemplateMessage | null | undefined;
        stickerMessage?: proto.Message.IStickerMessage | null | undefined;
        groupInviteMessage?: proto.Message.IGroupInviteMessage | null | undefined;
        templateButtonReplyMessage?: proto.Message.ITemplateButtonReplyMessage | null | undefined;
        productMessage?: proto.Message.IProductMessage | null | undefined;
        deviceSentMessage?: proto.Message.IDeviceSentMessage | null | undefined;
        messageContextInfo?: proto.IMessageContextInfo | null | undefined;
        listMessage?: proto.Message.IListMessage | null | undefined;
        viewOnceMessage?: proto.Message.IFutureProofMessage | null | undefined;
        orderMessage?: proto.Message.IOrderMessage | null | undefined;
        listResponseMessage?: proto.Message.IListResponseMessage | null | undefined;
        ephemeralMessage?: proto.Message.IFutureProofMessage | null | undefined;
        invoiceMessage?: proto.Message.IInvoiceMessage | null | undefined;
        buttonsMessage?: proto.Message.IButtonsMessage | null | undefined;
        buttonsResponseMessage?: proto.Message.IButtonsResponseMessage | null | undefined;
        paymentInviteMessage?: proto.Message.IPaymentInviteMessage | null | undefined;
        interactiveMessage?: proto.Message.IInteractiveMessage | null | undefined;
        reactionMessage?: proto.Message.IReactionMessage | null | undefined;
        stickerSyncRmrMessage?: proto.Message.IStickerSyncRMRMessage | null | undefined;
        interactiveResponseMessage?: proto.Message.IInteractiveResponseMessage | null | undefined;
        pollCreationMessage?: proto.Message.IPollCreationMessage | null | undefined;
        pollUpdateMessage?: proto.Message.IPollUpdateMessage | null | undefined;
        keepInChatMessage?: proto.Message.IKeepInChatMessage | null | undefined;
        documentWithCaptionMessage?: proto.Message.IFutureProofMessage | null | undefined;
        requestPhoneNumberMessage?: proto.Message.IRequestPhoneNumberMessage | null | undefined;
        viewOnceMessageV2?: proto.Message.IFutureProofMessage | null | undefined;
        encReactionMessage?: proto.Message.IEncReactionMessage | null | undefined;
        editedMessage?: proto.Message.IFutureProofMessage | null | undefined;
        viewOnceMessageV2Extension?: proto.Message.IFutureProofMessage | null | undefined;
        pollCreationMessageV2?: proto.Message.IPollCreationMessage | null | undefined;
        scheduledCallCreationMessage?: proto.Message.IScheduledCallCreationMessage | null | undefined;
        groupMentionedMessage?: proto.Message.IFutureProofMessage | null | undefined;
        pinInChatMessage?: proto.Message.IPinInChatMessage | null | undefined;
        pollCreationMessageV3?: proto.Message.IPollCreationMessage | null | undefined;
        scheduledCallEditMessage?: proto.Message.IScheduledCallEditMessage | null | undefined;
        ptvMessage?: proto.Message.IVideoMessage | null | undefined;
        botInvokeMessage?: proto.Message.IFutureProofMessage | null | undefined;
        callLogMesssage?: proto.Message.ICallLogMessage | null | undefined;
        messageHistoryBundle?: proto.Message.IMessageHistoryBundle | null | undefined;
        encCommentMessage?: proto.Message.IEncCommentMessage | null | undefined;
        bcallMessage?: proto.Message.IBCallMessage | null | undefined;
        lottieStickerMessage?: proto.Message.IFutureProofMessage | null | undefined;
        eventMessage?: proto.Message.IEventMessage | null | undefined;
        encEventResponseMessage?: proto.Message.IEncEventResponseMessage | null | undefined;
        commentMessage?: proto.Message.ICommentMessage | null | undefined;
        newsletterAdminInviteMessage?: proto.Message.INewsletterAdminInviteMessage | null | undefined;
        placeholderMessage?: proto.Message.IPlaceholderMessage | null | undefined;
        secretEncryptedMessage?: proto.Message.ISecretEncryptedMessage | null | undefined;
        albumMessage?: proto.Message.IAlbumMessage | null | undefined;
        eventCoverImage?: proto.Message.IFutureProofMessage | null | undefined;
        stickerPackMessage?: proto.Message.IStickerPackMessage | null | undefined;
        statusMentionMessage?: proto.Message.IFutureProofMessage | null | undefined;
        pollResultSnapshotMessage?: proto.Message.IPollResultSnapshotMessage | null | undefined;
        pollCreationOptionImageMessage?: proto.Message.IFutureProofMessage | null | undefined;
        associatedChildMessage?: proto.Message.IFutureProofMessage | null | undefined;
        groupStatusMentionMessage?: proto.Message.IFutureProofMessage | null | undefined;
        pollCreationMessageV4?: proto.Message.IFutureProofMessage | null | undefined;
        statusAddYours?: proto.Message.IFutureProofMessage | null | undefined;
        groupStatusMessage?: proto.Message.IFutureProofMessage | null | undefined;
        richResponseMessage?: proto.IAIRichResponseMessage | null | undefined;
        statusNotificationMessage?: proto.Message.IStatusNotificationMessage | null | undefined;
        limitSharingMessage?: proto.Message.IFutureProofMessage | null | undefined;
        botTaskMessage?: proto.Message.IFutureProofMessage | null | undefined;
        questionMessage?: proto.Message.IFutureProofMessage | null | undefined;
        messageHistoryNotice?: proto.Message.IMessageHistoryNotice | null | undefined;
        groupStatusMessageV2?: proto.Message.IFutureProofMessage | null | undefined;
        botForwardedMessage?: proto.Message.IFutureProofMessage | null | undefined;
        statusQuestionAnswerMessage?: proto.Message.IStatusQuestionAnswerMessage | null | undefined;
        questionReplyMessage?: proto.Message.IFutureProofMessage | null | undefined;
        questionResponseMessage?: proto.Message.IQuestionResponseMessage | null | undefined;
        statusQuotedMessage?: proto.Message.IStatusQuotedMessage | null | undefined;
        statusStickerInteractionMessage?: proto.Message.IStatusStickerInteractionMessage | null | undefined;
        pollCreationMessageV5?: proto.Message.IPollCreationMessage | null | undefined;
        newsletterFollowerInviteMessageV2?: proto.Message.INewsletterFollowerInviteMessage | null | undefined;
        pollResultSnapshotMessageV3?: proto.Message.IPollResultSnapshotMessage | null | undefined;
    };
    getContentType(content: WAProto.IMessage | undefined): keyof proto.IMessage | undefined;
    downloadContentFromMessage(downloadable: DownloadableMessage, type: MediaType, opts?: MediaDownloadOptions): Promise<stream.Transform>;
    sendInteractiveMessage(jid: string, content: IInteractiveMessageContent, options?: MessageGenerationOptionsFromContent | {}): void;
    replyInteractiveMessage(content: IInteractiveMessageContent, options?: MessageGenerationOptionsFromContent | {}): Promise<void>;
    prepareWAMessageMedia(message: AnyMediaMessageContent, options: MediaGenerationOptions): Promise<proto.Message>;
    decodeJid(jid: string): string;
}

type ButtonType = 'cta_url' | 'cta_call' | 'cta_copy' | 'cta_reminder' | 'cta_cancel_reminder' | 'address_message' | 'send_location' | 'quick_reply';
interface IClientOptions {
    prefix: Array<string> | string | RegExp;
    readIncommingMsg?: boolean;
    authDir?: string;
    printQRInTerminal?: boolean;
    qrTimeout?: number;
    markOnlineOnConnect?: boolean;
    logger?: any;
    phoneNumber?: string;
    usePairingCode?: boolean;
    selfReply?: boolean;
    WAVersion?: [number, number, number];
    autoMention?: boolean;
    authAdapter?: Promise<any>;
    browser?: WABrowserDescription;
}
interface ICommandOptions {
    name: string;
    aliases?: Array<string>;
    code: (ctx: Ctx) => Promise<any>;
}
interface ISectionsOptions {
    displayText: string;
    sections: {
        title: string;
        rows: ISectionsRows[];
    }[];
}
interface ISectionsRows {
    title: string;
    id: string;
    header?: string;
    description?: string;
}
interface ICollectorArgs {
    time?: number;
    max?: number;
    endReason?: string[];
    maxProcessed?: number;
    filter?: () => boolean;
}
interface ICtx {
    _used: {
        prefix?: Array<string> | string;
        command?: string;
        upsert?: any;
        hears?: any;
        poll?: any;
        pollVote?: any;
        reactions?: any;
    };
    _args: Array<String>;
    _self: ICtxSelf;
    _client: ReturnType<typeof _whiskeysockets_baileys__default>;
    _msg: IMessageInfo;
    _sender: {
        jid: string | null | undefined;
        decodedJid: string | null | undefined;
        pushName: string | null | undefined;
    };
    _config: {
        prefix: string | RegExp | string[];
        cmd: Collection<number | ICommandOptions, any> | undefined;
    };
}
interface ICollectorOptions {
    filter?: (args: any, collector: Collection<any, any>) => boolean;
    time: number;
    max?: number;
    maxProcessed?: number;
    endReason?: string[];
}
interface IMessageInfo extends WAMessage {
    content: string | null | undefined;
    messageType: keyof WAProto.IMessage | undefined;
    pollValues?: Array<string>;
    pollSingleSelect?: boolean;
    key: WAMessage['key'];
    message?: WAMessage['message'];
    pushName?: WAMessage['pushName'];
}
interface IMessageCollectorCollect extends IMessageInfo {
    jid: string | null | undefined;
    decodedJid: string | null | undefined;
    sender: string | null | undefined;
    decodedSender: string | null | undefined;
    content: string | null | undefined;
}
interface ICtxSelf extends Client {
    getContentType: typeof getContentType;
    downloadContentFromMessage: typeof downloadContentFromMessage;
    proto: typeof proto;
    m: IMessageInfo;
}
interface ICtxOptions {
    used: {
        prefix?: Array<string> | string;
        command?: string;
        upsert?: any;
        hears?: any;
        poll?: any;
        pollVote?: any;
        reactions?: any;
    };
    args: string[];
    self: ICtxSelf;
    client: ReturnType<typeof _whiskeysockets_baileys__default>;
}
interface IInteractiveMessageContent {
    body?: string;
    footer?: string;
    header?: (proto.Message.InteractiveMessage.IHeader | null);
    contextInfo?: (proto.IContextInfo | null);
    shopStorefrontMessage?: (proto.Message.InteractiveMessage.IShopMessage | null);
    collectionMessage?: (proto.Message.InteractiveMessage.ICollectionMessage | null);
    nativeFlowMessage?: (proto.Message.InteractiveMessage.INativeFlowMessage | null);
    carouselMessage?: (proto.Message.InteractiveMessage.ICarouselMessage | null);
}
interface IMe extends Contact {
    id: string;
    decodedId: string;
    readyAt?: number;
}

declare class Client {
    prefix: Array<string> | string | RegExp;
    readIncommingMsg?: boolean;
    authDir?: string;
    printQRInTerminal?: boolean;
    state?: AuthenticationState;
    saveCreds: any;
    core: ReturnType<typeof _whiskeysockets_baileys__default>;
    ev: EventEmitter$1;
    cmd?: Collection<ICommandOptions | number, any>;
    cooldown?: Collection<unknown, unknown>;
    middlewares?: Collection<number, (ctx: Ctx, next: () => Promise<void>) => any>;
    readyAt?: number;
    hearsMap: Collection<number, any>;
    qrTimeout?: number;
    markOnlineOnConnect?: boolean;
    logger?: any;
    phoneNumber?: string;
    usePairingCode?: boolean;
    selfReply?: boolean;
    WAVersion?: [number, number, number];
    autoMention?: boolean;
    fallbackWAVersion: [number, number, number];
    authAdapter?: Promise<any>;
    consolefy?: consolefy.Consolefy;
    browser?: WABrowserDescription$1;
    constructor(opts: IClientOptions);
    onConnectionUpdate(): void;
    onCredsUpdate(): void;
    read(m: IMessageInfo): void;
    use(fn: (ctx: Ctx, next: () => Promise<void>) => any): void;
    runMiddlewares(ctx: Ctx, index?: number): Promise<boolean>;
    onMessage(): void;
    onGroupParticipantsUpdate(): void;
    onGroupsJoin(): void;
    onCall(): void;
    /**
     * Create a new command.
     * @param opts Command options object or command name string.
     * @param code If the first parameter is a command name as a string, then you should create a callback function in second parameter.
     * @example
     * ```
     * bot.command('ping', async(ctx) => ctx.reply({ text: 'Pong!' }));
     *
     * // same as
     *
     * bot.command({
     *     name: 'ping',
     *     code: async(ctx) => {
     *         ctx.reply('Pong!');
     *     }
     * });
     * ```
     */
    command(opts: ICommandOptions | string, code?: (ctx: Ctx) => Promise<any>): Collection<number | ICommandOptions, any> | undefined;
    /**
     * "Callback" will be triggered when someone sends the "query" in the chats. Hears function like command but without command prefix.
     * @param query The trigger.
     * @param callback Callback function
     */
    hears(query: string | Array<string> | RegExp, callback: (ctx: Ctx) => Promise<any>): void;
    /**
     * Set the bot bio/about.
     * @param content The bio content.
     */
    bio(content: string): void;
    /**
     * Fetch bio/about from given Jid or if the param empty will fetch the bot bio/about.
     * @param [jid] the jid.
     */
    fetchBio(jid?: string): Promise<_whiskeysockets_baileys.USyncQueryResultList[] | undefined>;
    /**
     * All the groups that the bot joins.
     */
    groups(): Promise<{
        [_: string]: _whiskeysockets_baileys.GroupMetadata;
    }>;
    decodeJid(jid: string): string;
    launch(): Promise<void>;
}

declare class CommandHandler {
    _bot: any;
    _path: string;
    consolefy?: consolefy.Consolefy;
    /**
     * Create a new command handler instance
     *
     * ```ts
     * import { CommandHandler } from "@mengkodingan/ckptw";
     * import path from "path";
     *
     * const cmd = new CommandHandler(bot, path.resolve() + '/path/to/dir');
     * cmd.load();
     *
     * ```
     *
     * @param bot The bot instance
     * @param path A string that represent a path to commands directory. Recomended using `path` library.
     *
     * ```ts
     * import path from "path";
     * const cmd = new CommandHandler(bot, path.resolve() + '/path/to/dir');
     * ```
     */
    constructor(bot: any, path: string);
    load(isShowLog?: boolean): Promise<void>;
}

declare class ButtonBuilder {
    id: string | null;
    displayText: string | null;
    type: ButtonType;
    merhcant_url: string | null;
    url: string | null;
    copy_code: string | null;
    constructor(opts?: {
        id: null;
        displayText: null;
        type: 'quick_reply';
        merhcant_url: null;
        url: null;
        copy_code: null;
    });
    setId(id: string): this;
    setDisplayText(text: string): this;
    setType(type?: ButtonType): this;
    setMerchantURL(url: string): this;
    setURL(url: string): this;
    setCopyCode(content: string): this;
    build(): {
        name: ButtonType;
        buttonParamsJson: string;
    };
}

declare class SectionsBuilder {
    displayText: string | null;
    sections: {
        title: string;
        rows: ISectionsRows[];
    }[];
    constructor(opts?: ISectionsOptions);
    setDisplayText(text: string): this;
    addSection(content: {
        title: string;
        rows: ISectionsRows[];
    }): this;
    build(): {
        name: string;
        buttonParamsJson: string;
    };
}

declare class Cooldown extends EventEmitter$1 {
    ms: number;
    cooldown: Collection<unknown, unknown> | undefined;
    timeout: number;
    constructor(ctx: ICtx, ms: number);
    get onCooldown(): boolean;
    get timeleft(): number;
}

declare class VCardBuilder {
    fullName: string | null;
    org: string | null;
    number: string | null;
    constructor(opts?: {
        fullName: null;
        org: null;
        number: null;
    });
    setFullName(fullName: string): this;
    setOrg(organizationName: string): this;
    setNumber(number: string): this;
    build(): string;
}

/**
 * @deprecated Use Button Builder instead!
 */
declare class TemplateButtonsBuilder {
    array: Array<any>;
    index: number;
    constructor(opts?: {
        array: Array<any>;
    });
    addURL(opts: {
        displayText: string;
        url: string;
    }): this;
    addCall(opts: {
        displayText: string;
        phoneNumber: string;
    }): this;
    addQuickReply(opts: {
        displayText: string;
        id: string;
    }): this;
    build(): any[];
}

declare class CarouselBuilder {
    cards: proto.Message.IInteractiveMessage[];
    constructor(opts?: {
        cards: [];
    });
    addCard(content: IInteractiveMessageContent): this;
    build(): proto.Message.IInteractiveMessage[];
}

declare const bold: (str: string) => string;
declare const italic: (str: string) => string;
declare const strikethrough: (str: string) => string;
declare const quote: (str: string) => string;
declare const monospace: (str: string) => string;
declare const inlineCode: (str: string) => string;

declare const Events: {
    ClientReady: string;
    ConnectionUpdate: string;
    MessagesUpsert: string;
    QR: string;
    GroupsJoin: string;
    UserJoin: string;
    UserLeave: string;
    Poll: string;
    PollVote: string;
    Reactions: string;
    Call: string;
};

declare const MessageType: {
    conversation: string;
    senderKeyDistributionMessage: string;
    imageMessage: string;
    contactMessage: string;
    locationMessage: string;
    extendedTextMessage: string;
    documentMessage: string;
    audioMessage: string;
    videoMessage: string;
    call: string;
    chat: string;
    protocolMessage: string;
    contactsArrayMessage: string;
    highlyStructuredMessage: string;
    fastRatchetKeySenderKeyDistributionMessage: string;
    sendPaymentMessage: string;
    liveLocationMessage: string;
    requestPaymentMessage: string;
    declinePaymentRequestMessage: string;
    cancelPaymentRequestMessage: string;
    templateMessage: string;
    stickerMessage: string;
    groupInviteMessage: string;
    templateButtonReplyMessage: string;
    productMessage: string;
    deviceSentMessage: string;
    messageContextInfo: string;
    listMessage: string;
    viewOnceMessage: string;
    orderMessage: string;
    listResponseMessage: string;
    ephemeralMessage: string;
    invoiceMessage: string;
    buttonsMessage: string;
    buttonsResponseMessage: string;
    paymentInviteMessage: string;
    interactiveMessage: string;
    reactionMessage: string;
    stickerSyncRmrMessage: string;
    interactiveResponseMessage: string;
    pollCreationMessage: string;
    pollUpdateMessage: string;
    keepInChatMessage: string;
    documentWithCaptionMessage: string;
    requestPhoneNumberMessage: string;
    viewOnceMessageV2: string;
    encReactionMessage: string;
    editedMessage: string;
    viewOnceMessageV2Extension: string;
    pollCreationMessageV2: string;
    scheduledCallCreationMessage: string;
    groupMentionedMessage: string;
    pinInChatMessage: string;
    pollCreationMessageV3: string;
    scheduledCallEditMessage: string;
    ptvMessage: string;
    botInvokeMessage: string;
};

export { ButtonBuilder, type ButtonType, CarouselBuilder, Client, Collector, CommandHandler, Cooldown, Ctx, Events, Group, GroupData, type IClientOptions, type ICollectorArgs, type ICollectorOptions, type ICommandOptions, type ICtx, type ICtxOptions, type ICtxSelf, type IInteractiveMessageContent, type IMe, type IMessageCollectorCollect, type IMessageInfo, type ISectionsOptions, type ISectionsRows, MessageCollector, MessageType, SectionsBuilder, TemplateButtonsBuilder, VCardBuilder, bold, inlineCode, italic, monospace, quote, strikethrough };
