Rujira.Deployments (rujira_ex v0.0.1)

Copy Markdown View Source

Resolves deployed Rujira contracts from THORChain's contract-info index.

Queries Thorchain.Types.Query.Stub.contract_infos/2 via the configured Rujira.Node implementation and maps each on-chain ContractInfo to a Rujira.Deployments.Target.

Configuration

config :rujira_ex,
  # Map of contract-name string -> module implementing the resource.
  # Rujira's own protocols (e.g. "rujira-fin") are mapped by default;
  # consumers add their own entries here.
  protocol_modules: %{"rujira-bow" => MyApp.Bow},

  # Addresses to exclude from the resolved target list (e.g. legacy
  # or unmaintained deployments).
  deployments_omit: []

Consumers wire up cache invalidation themselves by calling invalidate/0 whenever a MsgInstantiateContract, MsgInstantiateContract2 or MsgMigrateContract is observed.

Summary

Functions

Invalidate all memoized deployment metadata.

List all targets for a given module.

Functions

contract_infos()

@spec contract_infos() :: {:ok, [Thorchain.Types.ContractInfo.t()]} | {:error, term()}

from_address(t1)

@spec from_address(String.t()) ::
  {:ok, Rujira.Deployments.Target.t()} | {:error, term()}

get_target(t1)

@spec get_target(module()) :: Rujira.Deployments.Target.t() | nil

invalidate()

@spec invalidate() :: :ok

Invalidate all memoized deployment metadata.

list_all_targets()

@spec list_all_targets() :: {:ok, [Rujira.Deployments.Target.t()]} | {:error, term()}

list_targets(t1)

@spec list_targets(module()) :: [Rujira.Deployments.Target.t()]

List all targets for a given module.