import { SurfaceType, BlockType, ElementType } from '../constants';
import type { ObjectLiteral } from '../types';
import type { PlainTextObject } from '../objects';
export declare enum Param {
    actionId = "action_id",
    blocks = "blocks",
    blockId = "block_id",
    maxSelectedItems = "max_selected_items",
    title = "title",
    text = "text",
    confirm = "confirm",
    deny = "deny",
    style = "style",
    danger = "danger",
    label = "label",
    options = "options",
    value = "value",
    description = "description",
    url = "url",
    elements = "elements",
    externalId = "external_id",
    imageUrl = "image_url",
    altText = "alt_text",
    element = "element",
    hint = "hint",
    optional = "optional",
    fields = "fields",
    accessory = "accessory",
    initialChannels = "initial_channels",
    initialChannel = "initial_channel",
    responseUrlEnabled = "response_url_enabled",
    initialOptions = "initial_options",
    initialConversations = "initial_conversations",
    defaultToCurrentConversation = "default_to_current_conversation",
    filter = "filter",
    initialConversation = "initial_conversation",
    initialDate = "initial_date",
    initialDateTime = "initial_date_time",
    isDecimalAllowed = "is_decimal_allowed",
    minQueryLength = "min_query_length",
    initialOption = "initial_option",
    optionGroups = "option_groups",
    placeholder = "placeholder",
    initialValue = "initial_value",
    multiline = "multiline",
    minLength = "min_length",
    maxLength = "max_length",
    initialUsers = "initial_users",
    initialUser = "initial_user",
    channel = "channel",
    close = "close",
    submit = "submit",
    clearOnClose = "clear_on_close",
    notifyOnClose = "notify_on_close",
    privateMetaData = "private_metadata",
    callbackId = "callback_id",
    asUser = "as_user",
    ts = "ts",
    threadTs = "thread_ts",
    replaceOriginal = "replace_original",
    deleteOriginal = "delete_original",
    responseType = "response_type",
    postAt = "post_at",
    color = "color",
    fallback = "fallback",
    attachments = "attachments",
    dispatchAction = "dispatch_action",
    dispatchActionConfig = "dispatch_action_config",
    initialTime = "initial_time",
    mrkdwn = "mrkdwn",
    submitDisabled = "submit_disabled",
    type = "type",
    focusOnLoad = "focus_on_load",
    accessibilityLabel = "accessibility_label",
    authorName = "author_name",
    providerIconUrl = "provider_icon_url",
    providerName = "provider_name",
    titleUrl = "title_url",
    thumbnailUrl = "thumbnail_url",
    videoUrl = "video_url",
    minValue = "min_value",
    maxValue = "max_value"
}
export declare class SlackDto implements ObjectLiteral {
    constructor(params: ObjectLiteral);
    static mapParam(param: string): string;
}
export declare class SlackMessageDto extends SlackDto {
    readonly text: string;
    readonly channel: string;
    readonly blocks?: SlackBlockDto[];
    readonly attachments?: SlackDto[];
}
export declare class SlackHomeTabDto extends SlackDto {
    readonly type = SurfaceType.HomeTab;
    readonly blocks: SlackBlockDto[];
}
export declare class SlackModalDto extends SlackDto {
    readonly type = SurfaceType.Modal;
    readonly title: PlainTextObject;
    readonly blocks: SlackBlockDto[];
}
export declare class SlackWorkflowStepDto extends SlackDto {
    readonly type = SurfaceType.WorkflowStep;
    readonly blocks: SlackBlockDto[];
}
export declare type SlackViewDto = SlackModalDto | SlackWorkflowStepDto | SlackHomeTabDto;
export declare class SlackBlockDto extends SlackDto {
    readonly type: BlockType;
}
export declare class SlackElementDto extends SlackDto {
    readonly type: ElementType;
}
