   Comments throughout this module are direct quotes from https://publicsuffix.org/list/,
   showing how individual lines of code relate to the specification.
   """
+
+  @type options :: [ignore_private: boolean]
 
   @doc """
   Extracts the public suffix from the provided domain based on the publicsuffix.org rules.

  Extracts the _registrable_ part of the provided domain. The registrable
  part is the public suffix plus one additional domain part. For example,
  given a public suffix of `co.uk`, so `example.co.uk` would be the registrable
  domain part.

  ## Examples
    iex> registrable_domain("foo.bar.com")
    "bar.com"

  You can use the `ignore_private` keyword to exclude private (non-ICANN) domains.


    iex> public_suffix("foo.github.io")
    "github.io"
  """
  @spec public_suffix(String.t) :: nil | String.t
  @spec public_suffix(String.t, options) :: nil | String.t
  def public_suffix(domain, options \\ []) when is_binary(domain) do
    parse_domain(domain, options, 0)
  end

