import { Builder } from '../lib';
import type { AttachmentBuilder, OptionBuilder, OptionGroupBuilder } from '../../bits';
import type { Appendable, FilterString } from '../types';
export declare abstract class Attachments extends Builder {
    /**
     * @description Adds attachments to your message.
     *
     * {@link https://api.slack.com/block-kit|Open Official Slack Block Kit Documentation}
     * {@link https://www.blockbuilder.dev|Open Block Builder Documentation}
     */
    attachments(...attachments: Appendable<AttachmentBuilder>): this;
}
export declare abstract class Blocks<T> extends Builder {
    /**
     * @description Adds blocks to your view or message.
     *
     * **Slack Validation Rules and Tips:**
     *    * **Required for modals, home tabs, and workflow steps** ⚠
     *    * Maximum of 100 blocks.
     *
     * {@link https://api.slack.com/block-kit|Open Official Slack Block Kit Documentation}
     * {@link https://www.blockbuilder.dev|Open Block Builder Documentation}
     */
    blocks(...blocks: Appendable<T>): this;
}
export declare abstract class Elements<T> extends Builder {
    /**
     * @description Adds elements to the actions block.
     *
     * **Slack Validation Rules and Tips:**
     *    * **Required** ⚠
     *    * Maximum of 5 elements.
     *    * Supported elements are buttons, select and overflow menus, and date pickers.
     *
     * {@link https://api.slack.com/block-kit|Open Official Slack Block Kit Documentation}
     * {@link https://www.blockbuilder.dev|Open Block Builder Documentation}
     */
    elements(...elements: Appendable<T>): this;
}
export declare abstract class Fields extends Builder {
    /**
     * @description Adds text fields to the section block, in two columns, side-by-side.
     *
     * **Slack Validation Rules and Tips:**
     *    * **Required if the text property is undefined** ⚠
     *    * Maximum of 10 items.
     *    * Maximum of 2000 characters for each field.
     *    * Markdown supported.
     *
     * {@link https://api.slack.com/block-kit|Open Official Slack Block Kit Documentation}
     * {@link https://www.blockbuilder.dev|Open Block Builder Documentation}
     */
    fields(...fields: Appendable<string>): this;
}
export declare abstract class Filter extends Builder {
    /**
     * @description Defines which conversations should be included in the list.
     *
     * **Slack Validation Rules and Tips:**
     *    * Possible values are *im*, *impm*, *private*, and *public*.
     *
     * {@link https://api.slack.com/block-kit|Open Official Slack Block Kit Documentation}
     * {@link https://www.blockbuilder.dev|Open Block Builder Documentation}
     */
    filter(...filters: Appendable<FilterString>): this;
}
export declare abstract class InitialChannels extends Builder {
    /**
     * @description Pre-populates the menu with selected, default channels.
     *
     * {@link https://api.slack.com/block-kit|Open Official Slack Block Kit Documentation}
     * {@link https://www.blockbuilder.dev|Open Block Builder Documentation}
     */
    initialChannels(...channelIds: Appendable<string>): this;
}
export declare abstract class InitialConversations extends Builder {
    /**
     * @description Pre-populates the menu with selected, default conversations.
     *
     * {@link https://api.slack.com/block-kit|Open Official Slack Block Kit Documentation}
     * {@link https://www.blockbuilder.dev|Open Block Builder Documentation}
     */
    initialConversations(...conversationIds: Appendable<string>): this;
}
export declare abstract class InitialOptions extends Builder {
    /**
     * @description Pre-populates the menu or checkbox input with selected, default options.
     *
     * **Slack Validation Rules and Tips:**
     *    * Must be exact matches to options in the menu.
     *
     * {@link https://api.slack.com/block-kit|Open Official Slack Block Kit Documentation}
     * {@link https://www.blockbuilder.dev|Open Block Builder Documentation}
     */
    initialOptions(...options: Appendable<OptionBuilder>): this;
}
export declare abstract class InitialUsers extends Builder {
    /**
     * @description Pre-populates the menu with selected, default users.
     *
     * {@link https://api.slack.com/block-kit|Open Official Slack Block Kit Documentation}
     * {@link https://www.blockbuilder.dev|Open Block Builder Documentation}
     */
    initialUsers(...userIds: Appendable<string>): this;
}
export declare abstract class OptionGroups extends Builder {
    /**
     * @description Adds organized groups of options to the select or multi-select menu, each with its own label or title.
     *
     * **Slack Validation Rules and Tips:**
     *    * Maximum of 100 options.
     *    * Both options and options groups cannot be defined at the same time for any element.
     *
     * {@link https://api.slack.com/block-kit|Open Official Slack Block Kit Documentation}
     * {@link https://www.blockbuilder.dev|Open Block Builder Documentation}
     */
    optionGroups(...optionGroups: Appendable<OptionGroupBuilder>): this;
}
export declare abstract class Options extends Builder {
    /**
     * @description Adds options to the select or multi-select menu.
     *
     * **Slack Validation Rules and Tips:**
     *    * **Required** ⚠
     *    * Maximum of 100 options.
     *    * Both options and options groups cannot be defined at the same time for any element.
     *
     * {@link https://api.slack.com/block-kit|Open Official Slack Block Kit Documentation}
     * {@link https://www.blockbuilder.dev|Open Block Builder Documentation}
     */
    options(...options: Appendable<OptionBuilder>): this;
}
