import { Confirm, AnyOption, PlainTextField, MessageMetadata, AnyMessageBlock, MessageAttachment } from "slack-web-api-client"; import { DataSubmissionView, ViewStateValue } from "./view-objects"; import { BotProfile } from "./event"; export type BlockAction = MessageBlockAction | ViewBlockAction; export type MessageBlockAction = BaseBlockAction & { channel: { id: string; name: string; }; message: { type: "message"; user?: string; ts: string; thread_ts?: string; text: string; metadata?: MessageMetadata; blocks?: AnyMessageBlock[]; attachments?: MessageAttachment[]; bot_id?: string; bot_profile?: BotProfile; edited?: { user: string; ts: string; }; [key: string]: any; }; container: { type: "message"; message_ts: string; channel_id: string; is_ephemeral: boolean; } | { type: "message_attachment"; message_ts: string; attachment_id: number; channel_id: string; is_ephemeral: boolean; is_app_unfurl: boolean; app_unfurl_url?: string; thread_ts?: string; }; app_unfurl?: { id: string; app_id: string; bot_id: string; fallback: string; app_unfurl_url: string; is_app_unfurl: boolean; }; response_url?: string; }; export type ViewBlockAction = BaseBlockAction & { view: DataSubmissionView; container: { type: "view"; view_id: string; }; }; export interface BaseBlockAction { type: "block_actions"; actions: A[]; trigger_id: string; api_app_id: string; is_enterprise_install?: boolean; enterprise?: { id: string; name: string; }; team: { id: string; domain: string; enterprise_id?: string; enterprise_name?: string; } | null; user: { id: string; name: string; team_id?: string; }; state: { values: { [blockId: string]: { [actionId: string]: ViewStateValue; }; }; }; bot_access_token?: string; function_data?: { execution_id: string; function: { callback_id: string; }; inputs: { [key: string]: any; }; }; interactivity?: { interactivity_pointer: string; interactor: { id: string; secret: string; }; }; token: string; } export interface BlockElementAction { type: T; block_id: string; action_id: string; action_ts: string; } export interface ButtonAction extends BlockElementAction<"button"> { value: string; text: PlainTextField; url?: string; confirm?: Confirm; accessibility_label?: string; } export interface StaticSelectAction extends BlockElementAction<"static_select"> { selected_option: { text: PlainTextField; value: string; }; initial_option?: AnyOption; placeholder?: PlainTextField; confirm?: Confirm; } export interface MultiStaticSelectAction extends BlockElementAction<"multi_static_select"> { selected_options: { text: PlainTextField; value: string; }[]; initial_options?: AnyOption[]; placeholder?: PlainTextField; confirm?: Confirm; } export interface UsersSelectAction extends BlockElementAction<"users_select"> { selected_user: string; initial_user?: string; placeholder?: PlainTextField; confirm?: Confirm; } export interface MultiUsersSelectAction extends BlockElementAction<"multi_users_select"> { selected_users: string[]; initial_users?: string[]; placeholder?: PlainTextField; confirm?: Confirm; } export interface ConversationsSelectAction extends BlockElementAction<"conversations_select"> { selected_conversation: string; initial_conversation?: string; placeholder?: PlainTextField; confirm?: Confirm; } export interface MultiConversationsSelectAction extends BlockElementAction<"multi_conversations_select"> { selected_conversations: string[]; initial_conversations?: string[]; placeholder?: PlainTextField; confirm?: Confirm; } export interface ChannelsSelectAction extends BlockElementAction<"channels_select"> { selected_channel: string; initial_channel?: string; placeholder?: PlainTextField; confirm?: Confirm; } export interface MultiChannelsSelectAction extends BlockElementAction<"multi_channels_select"> { selected_channels: string[]; initial_channels?: string[]; placeholder?: PlainTextField; confirm?: Confirm; } export interface ExternalSelectAction extends BlockElementAction<"external_select"> { selected_option?: AnyOption; initial_option?: AnyOption; placeholder?: PlainTextField; min_query_length?: number; confirm?: Confirm; } export interface MultiExternalSelectAction extends BlockElementAction<"multi_external_select"> { selected_options?: AnyOption[]; initial_options?: AnyOption[]; placeholder?: PlainTextField; min_query_length?: number; confirm?: Confirm; } export interface OverflowAction extends BlockElementAction<"overflow"> { selected_option: { text: PlainTextField; value: string; }; confirm?: Confirm; } export interface DatepickerAction extends BlockElementAction<"datepicker"> { selected_date: string | null; initial_date?: string; placeholder?: PlainTextField; confirm?: Confirm; } export interface RadioButtonsAction extends BlockElementAction<"radio_buttons"> { selected_option: AnyOption | null; initial_option?: AnyOption; confirm?: Confirm; } export interface CheckboxesAction extends BlockElementAction<"checkboxes"> { selected_options: AnyOption[]; initial_options?: AnyOption[]; confirm?: Confirm; } export interface PlainTextInputAction extends BlockElementAction<"plain_text_input"> { value: string; } export type BlockElementActions = ButtonAction | StaticSelectAction | MultiStaticSelectAction | UsersSelectAction | MultiUsersSelectAction | ConversationsSelectAction | MultiConversationsSelectAction | ChannelsSelectAction | MultiChannelsSelectAction | ExternalSelectAction | MultiExternalSelectAction | OverflowAction | DatepickerAction | RadioButtonsAction | CheckboxesAction | PlainTextInputAction; export type BlockElementTypes = BlockElementActions["type"]; //# sourceMappingURL=block-action.d.ts.map