import type { Activity } from '../Activity';

/**
 * Describes an [`Actor`](https://serenity-js.org/api/core/class/Actor/) who can perform a sequence of [activities](https://serenity-js.org/api/core/class/Activity/),
 * such as [tasks](https://serenity-js.org/api/core/class/Task/) or [interactions](https://serenity-js.org/api/core/class/Interaction/).
 *
 * ## Learn more
 * - [`Activity`](https://serenity-js.org/api/core/class/Activity/)
 * - [`Interaction`](https://serenity-js.org/api/core/class/Interaction/)
 * - [`Task`](https://serenity-js.org/api/core/class/Task/)
 * - [`Actor`](https://serenity-js.org/api/core/class/Actor/)
 *
 * @group Actors
 */
export interface PerformsActivities {

    /**
     * Makes the [`Actor`](https://serenity-js.org/api/core/class/Actor/) attempt to perform a sequence of [activities](https://serenity-js.org/api/core/class/Activity/).
     */
    attemptsTo: (...activities: Activity[]) => Promise<void>;
}
