defmodule Plaid do @moduledoc """ Shared types used in the library. """ @typedoc "Supported environments in the Plaid API." @type env :: :production | :development | :sandbox @typedoc """ Configuration that can be passed to each authenticated request. * `:client_id` - The client_id Plaid uses for authentication. * `:secret` - The secret Plaid uses for authentication. * `:env` - A supported [Plaid environment](https://plaid.com/docs/api/#api-host). * `:http_client` - Any module that implements the `Plaid.Client` behaviour. * `:test_api_host` - A way to override the URL for requests. Useful for E2E or integration testing. > `client_id` and `secret` are required. """ @type config :: [ client_id: String.t(), secret: String.t(), env: env(), http_client: module(), test_api_host: String.t() ] @typedoc """ Configuration that can be passed to any un-authenticated request. * `:env` - A supported [Plaid environment](https://plaid.com/docs/api/#api-host). * `:http_client` - Any module that implements the `Plaid.Client` behaviour. * `:test_api_host` - A way to override the URL for requests. Useful for E2E or integration testing. """ @type noauth_config :: [ test_api_host: String.t(), http_client: module(), env: env() ] end