import { CommandActivity } from './activities/command/index.js';
import { ConversationActivity } from './activities/conversation/index.js';
import { EventActivity } from './activities/event/index.js';
import { IHandoffActivity } from './activities/handoff.js';
import { InstallUpdateActivity } from './activities/install-update/index.js';
import { AdaptiveCardInvokeActivity } from './activities/invoke/adaptive-card/index.js';
import { ConfigInvokeActivity } from './activities/invoke/config/index.js';
import { IExecuteActionInvokeActivity } from './activities/invoke/execute-action.js';
import { IFileConsentInvokeActivity } from './activities/invoke/file-consent.js';
import { IHandoffActionInvokeActivity } from './activities/invoke/handoff-action.js';
import { IHtmlWidgetCallToolInvokeActivity } from './activities/invoke/html-widget/call-tool.js';
import { MessageInvokeActivity } from './activities/invoke/message/index.js';
import { IMessageExtensionAnonQueryLinkInvokeActivity } from './activities/invoke/message-extension/anon-query-link.js';
import { IMessageExtensionCardButtonClickedInvokeActivity } from './activities/invoke/message-extension/card-button-clicked.js';
import { ConversationReference } from './models/conversation/conversation-reference.js';
import { IActivity } from './activities/activity.js';
import { Message } from './models/message/message.js';
import { TaskModuleRequest } from './models/task-module/task-module-request.js';
import { IMessageExtensionQueryInvokeActivity } from './activities/invoke/message-extension/query.js';
import { IMessageExtensionQueryLinkInvokeActivity } from './activities/invoke/message-extension/query-link.js';
import { IMessageExtensionQuerySettingUrlInvokeActivity } from './activities/invoke/message-extension/query-setting-url.js';
import { IMessageExtensionSelectItemInvokeActivity } from './activities/invoke/message-extension/select-item.js';
import { IMessageExtensionSettingInvokeActivity } from './activities/invoke/message-extension/setting.js';
import { ISearchInvokeActivity } from './activities/invoke/search.js';
import { SignInInvokeActivity } from './activities/invoke/sign-in/index.js';
import { ISuggestedActionSubmitInvokeActivity } from './activities/invoke/suggested-action-submit.js';
import { TabInvokeActivity } from './activities/invoke/tab/index.js';
import { TaskInvokeActivity } from './activities/invoke/task/index.js';
import './activities/invoke/adaptive-card/action.js';
import './activities/invoke/config/config-fetch.js';
import './activities/invoke/config/config-submit.js';
import './activities/invoke/message/fetch-task.js';
import './activities/invoke/message/submit-action.js';
import './activities/invoke/sign-in/failure.js';
import './activities/invoke/sign-in/token-exchange.js';
import './activities/invoke/sign-in/verify-state.js';
import './activities/invoke/tab/tab-fetch.js';
import './activities/invoke/tab/tab-submit.js';
import './activities/invoke/task/task-fetch.js';
import './activities/invoke/task/task-submit.js';
import { $MessageActivity } from './activities/message/index.js';
import { ITraceActivity } from './activities/trace.js';
import { ITypingActivity } from './activities/typing.js';
import './message-BqFiZrVg.js';
import './activities/utils/to-activity-params.js';
import './activities/event/agent-lifecycle.js';
import './activities/command/command-result.js';
import './activities/command/command-send.js';
import './activities/conversation/end-of-conversation.js';
import './activities/conversation/conversation-update.js';
import './activities/install-update/add.js';
import './activities/install-update/upgrade.js';
import './activities/event/meeting-end.js';
import './activities/event/meeting-participant-join.js';
import './activities/event/meeting-participant-leave.js';
import './activities/event/meeting-start.js';
import './activities/message/message-delete.js';
import './activities/message/message-reaction.js';
import './activities/message/message-update.js';
import './activities/event/read-receipt.js';
import './activities/install-update/remove.js';

interface IMessageExtensionFetchTaskInvokeActivity extends IActivity<'invoke'> {
    /**
     * The name of the operation associated with an invoke or event activity.
     */
    name: 'composeExtension/fetchTask';
    /**
     * A value that is associated with the activity.
     */
    value: MessagingExtensionAction;
    /**
     * A reference to another conversation or activity.
     * @deprecated This will be removed by end of summer 2026.
     */
    relatesTo?: ConversationReference;
}

interface IMessageExtensionSubmitActionInvokeActivity extends IActivity<'invoke'> {
    /**
     * The name of the operation associated with an invoke or event activity.
     */
    name: 'composeExtension/submitAction';
    /**
     * A value that is associated with the activity.
     */
    value: MessagingExtensionAction;
    /**
     * A reference to another conversation or activity.
     * @deprecated This will be removed by end of summer 2026.
     */
    relatesTo?: ConversationReference;
}

type MessageExtensionInvokeActivity = IMessageExtensionAnonQueryLinkInvokeActivity | IMessageExtensionFetchTaskInvokeActivity | IMessageExtensionCardButtonClickedInvokeActivity | IMessageExtensionQueryLinkInvokeActivity | IMessageExtensionQuerySettingUrlInvokeActivity | IMessageExtensionQueryInvokeActivity | IMessageExtensionSelectItemInvokeActivity | IMessageExtensionSettingInvokeActivity | IMessageExtensionSubmitActionInvokeActivity;

type InvokeActivity = IFileConsentInvokeActivity | IExecuteActionInvokeActivity | MessageExtensionInvokeActivity | ConfigInvokeActivity | TabInvokeActivity | TaskInvokeActivity | MessageInvokeActivity | IHandoffActionInvokeActivity | SignInInvokeActivity | AdaptiveCardInvokeActivity | ISuggestedActionSubmitInvokeActivity | ISearchInvokeActivity | IHtmlWidgetCallToolInvokeActivity;

type Activity = $MessageActivity | EventActivity | InvokeActivity | ITraceActivity | ITypingActivity | IHandoffActivity | ConversationActivity | CommandActivity | InstallUpdateActivity;

/**
 *
 * An interface representing MessagingExtensionAction.
 * Messaging extension action
 *
 * @extends TaskModuleRequest
 */
type MessagingExtensionAction = TaskModuleRequest & {
    /**
     * @member {string} [commandId] Id of the command assigned by Bot
     */
    commandId?: string;
    /**
     * @member {CommandContext} [commandContext] The context from which the
     * command originates. Possible values include: 'message', 'compose',
     * 'commandbox'
     */
    commandContext: 'message' | 'compose' | 'commandbox';
    /**
     * @member {BotMessagePreviewActionType} [botMessagePreviewAction] Bot message
     * preview action taken by user. Possible values include: 'edit', 'send'
     */
    botMessagePreviewAction: 'edit' | 'send';
    /**
     * @member {Activity[]} [botActivityPreview]
     */
    botActivityPreview?: Activity[];
    /**
     * @member {MessageActionsPayload} [messagePayload] Message content sent as
     * part of the command request.
     */
    messagePayload?: Message;
};

export type { Activity as A, IMessageExtensionFetchTaskInvokeActivity as I, MessageExtensionInvokeActivity as M, IMessageExtensionSubmitActionInvokeActivity as a, InvokeActivity as b, MessagingExtensionAction as c };
