content: /*
   * Copyright (C) 2021-2025 Lightbend Inc. <https://www.lightbend.com>
   */
  
  package akka.javasdk.grpc;
  
  import akka.annotation.DoNotInherit;
  import akka.grpc.javadsl.AkkaGrpcClient;
  
  /**
   * Not for user extension, instances are available through injection in selected component types.
   */
  @DoNotInherit
  public interface GrpcClientProvider {
    /**
     * Returns a gRPC client to interact with the specified service.
     *
     * <p>If the serviceName is a service name without protocol or domain the client will be configured to connect to
     * another service deployed with that name on the same Akka project. The runtime will take care of
     * routing requests to the service and keeping the data safe by encrypting the connection between services and identifying
     * the client as coming from this service.
     *
     * <p>If it is a full dns name prefixed with "http://" or "https://" it will connect to services available on the
     * public internet.
     *
     * <p>The client lifecycle is managed by the runtime, service code should not call {@code close() on the client.
     *
     * // FIXME what about powerapi client interface for request headers?
     * @param serviceClass A gRPC service client interface generated by Akka gRPC
     */
    <T extends AkkaGrpcClient> T grpcClientFor(Class<T> serviceClass, String serviceName);
  }
  