, timeout_seconds: int}> */ public array $calls = []; /** * @param list $results */ public function __construct( private bool $available = true, private array $results = [], ) {} public function setAvailable(bool $available): void { $this->available = $available; } public function pushResult(ExchangePowerShellProcessResult $result): void { $this->results[] = $result; } public function available(): bool { return $this->available; } public function run(ExchangePowerShellProcessCommand $command): ExchangePowerShellProcessResult { $this->calls[] = [ 'arguments' => $command->arguments, 'timeout_seconds' => $command->timeoutSeconds, ]; return array_shift($this->results) ?? ExchangePowerShellProcessResult::completed(0, '[]'); } }