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