> */ public array $calls = []; public ?\Throwable $throwOnOffer = null; public function name(): string { return 'fake'; } public function offer(string $peerId, string $sdpOffer): string { $this->calls[] = ['offer', $peerId, $sdpOffer]; if ($this->throwOnOffer !== null) { throw $this->throwOnOffer; } return "answer-for-{$peerId}"; } public function addIceCandidate(string $peerId, array $candidate): void { $this->calls[] = ['ice', $peerId, $candidate]; } public function startRecording(string $peerId, string $path): void { $this->calls[] = ['record', $peerId, $path]; } public function stopRecording(string $peerId): void { $this->calls[] = ['stopRecording', $peerId]; } public function connectPeers(string $peerA, string $peerB): void { $this->calls[] = ['connect', $peerA, $peerB]; } public function bridge(string $peerId, array $options): void { $this->calls[] = ['bridge', $peerId, $options]; } public function close(string $peerId): void { $this->calls[] = ['close', $peerId]; } }