import { IActivity } from '../activity.js';
import '../../models/channel-id.js';
import '../../models/account.js';
import '../../models/membership-source.js';
import '../../models/membership-source-types.js';
import '../../models/membership-types.js';
import '../../models/role.js';
import '../../models/conversation/conversation-reference.js';
import '../../models/entity/index.js';
import '../../models/entity/ai-message-entity.js';
import '../../models/entity/message-entity.js';
import '../../models/entity/citation-entity.js';
import '../../models/entity/client-info-entity.js';
import '../../models/entity/mention-entity.js';
import '../../models/entity/product-info-entity.js';
import '../../models/entity/sensitive-usage-entity.js';
import '../../models/entity/stream-info-entity.js';
import '../../models/channel-data/index.js';
import '../../models/meeting/meeting-info.js';
import '../../models/meeting/meeting-details.js';
import '../../models/channel-data/channel-info.js';
import '../../models/channel-data/feedback-loop.js';
import '../../models/channel-data/notification-info.js';
import '../../models/channel-data/on-behalf-of.js';
import '../../models/channel-data/settings.js';
import '../../models/channel-data/team-info.js';
import '../../models/channel-data/tenant-info.js';

/**
 * 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 };
