defmodule Rapyd.Client do @moduledoc """ Immutable configuration struct passed to every service call. Build one with `Rapyd.new/1` or `Rapyd.new!/1` — do not construct this struct directly. """ @enforce_keys [:access_key, :secret_key, :base_url] defstruct [ :access_key, :secret_key, :base_url, :merchant_account_id, sandbox: true, max_retries: 4, timeout: 30_000, http_client: Rapyd.HTTP.Client ] @type t :: %__MODULE__{ access_key: String.t(), secret_key: String.t(), base_url: String.t(), sandbox: boolean(), merchant_account_id: String.t() | nil, max_retries: non_neg_integer(), timeout: non_neg_integer(), http_client: module() } end