lib/modules/contracts.ex
defmodule Snowtracex.Contracts do
@moduledoc """
Provides access to Snowtrace Contracts API.
[API Documentation](https://snowtrace.io/apis#contracts)
"""
@module :contract
use Snowtracex.APIModule
@spec get_abi(binary()) :: {:ok, map()} | {:error, any()}
def get_abi(address) do
Client.request(@module, "getabi", address: address)
|> case do
{:ok, "Contract source code not verified"} ->
{:error, :not_verified}
{:ok, response} ->
Jason.decode(response, keys: :atoms)
end
end
end