import { IActivity } from '../activity.mjs';
import '../../models/channel-id.mjs';
import '../../models/account.mjs';
import '../../models/agentic-identity.mjs';
import '../../models/conversation-type.mjs';
import '../../models/membership-source.mjs';
import '../../models/membership-source-types.mjs';
import '../../models/membership-types.mjs';
import '../../models/role.mjs';
import '../../models/conversation/conversation-reference.mjs';
import '../../models/entity/index.mjs';
import '../../models/entity/ai-message-entity.mjs';
import '../../models/entity/message-entity.mjs';
import '../../models/entity/citation-entity.mjs';
import '../../models/entity/sensitivity-usage-info.mjs';
import '../../models/entity/client-info-entity.mjs';
import '../../models/entity/mention-entity.mjs';
import '../../models/entity/product-info-entity.mjs';
import '../../models/entity/quoted-reply-entity.mjs';
import '../../models/entity/sensitive-usage-entity.mjs';
import '../../models/entity/stream-info-entity.mjs';
import '../../models/entity/targeted-message-info-entity.mjs';
import '../../models/channel-data/index.mjs';
import '../../models/meeting/meeting-info.mjs';
import '../../models/meeting/meeting-details.mjs';
import '../../models/channel-data/app-info.mjs';
import '../../models/channel-data/channel-info.mjs';
import '../../models/channel-data/chat-info.mjs';
import '../../models/channel-data/feedback-loop.mjs';
import '../../models/channel-data/notification-info.mjs';
import '../../models/channel-data/on-behalf-of.mjs';
import '../../models/channel-data/reply-chain-info.mjs';
import '../../models/channel-data/settings.mjs';
import '../../models/channel-data/source-info.mjs';
import '../../models/channel-data/team-info.mjs';
import '../../models/channel-data/tenant-info.mjs';

/**
 * Asynchronous external command result.
 */
interface ICommandResultActivity<T = any> extends IActivity<'commandResult'> {
    /**
     * The name of the event.
     */
    name: string;
    /**
     * The value for this command.
     */
    value?: CommandResultValue<T>;
}
/**
 * The value field of a ICommandResultActivity contains metadata related to a command result.
 * An optional extensible data payload may be included if defined by the command activity name.
 * The presence of an error field indicates that the original command failed to complete.
 */
type CommandResultValue<T = any> = {
    /**
     * ID of the command.
     */
    commandId: string;
    /**
     * The data field containing optional parameters specific to this command activity,
     * as defined by the name. The value of the data field is a complex type.
     */
    data?: T;
    /**
     * The optional error, if the command result indicates a failure.
     */
    error?: Error;
};

export type { CommandResultValue, ICommandResultActivity };
