# UTxO RPC Client SDK An SDK for clients of the [UTxO RPC](https://utxorpc.org/) specification. The goal of this SDK is to reduce boilerplate and increase ease of use of the UTxO RPC spec. This SDK provides convenience methods for creating a connection to a UTxO RPC service and for calling each each method in the UTxO RPC specification. Automated logging of each event in a gRPC call is also supported. ## How to Use Use the SDK through one of the client-creating functions in `Utxorpc.Client`. 1. `simpleUtxorpcClient` -- connect to a service using the bare minimum required information. 1. See `/quick-start/Main.hs`. 1. `utxorpcClient` -- connect to a service using the provided `UtxorpcInfo`. 1. See `/example/Main.hs` 1. `UtxorpcClientWith` -- for fine grained control, provide a `GrpcClientConfig` (from `http2-client-grpc`) Each of these functions provides a record type hosting functions for each method in UTxO RPC, as well as a method to close the connection. ## Logging This SDK supports automated logging through the `UtxorpcClientLogger` type. It is a record hosting user-defined logging functions for each of the following events: 1. Request sent. 1. Reply received. 1. Server stream data received. 1. Server stream ended. For more information, see `Utxorpc.Logged` and `/example`. ## Examples There are two provided examples: 1. `/quick-start` shows the bare minimum required to make a single unary request. 1. `/example` shows a more involved example. `/example/SimpleLogger.hs` is a simple logger implementation that prints human-readable output, and `/example/KatipLogger.hs` is a more involved logger that demonstrates how to use logging functions that run in a transformer stack.