dnsResolver->resolveAll($hostname); } catch (\Throwable) { return null; } } $addresses = array_values(array_unique(array_filter( $addresses, static fn (mixed $address): bool => is_string($address) && $address !== '', ))); if ($addresses === []) { return null; } foreach ($addresses as $address) { if (! WalletApiUrlSanitizer::isPublicIp($address)) { return null; } } $totalTimeoutSeconds = max(1, $timeoutSeconds); return new GuardedWalletApiEndpoint( baseUrl: $baseUrl, hostname: $hostname, port: $port, pinnedIp: $addresses[0], totalTimeoutSeconds: $totalTimeoutSeconds, connectTimeoutSeconds: min(self::MAX_CONNECT_TIMEOUT_SECONDS, $totalTimeoutSeconds), ); } }