Packages
forge_sdk
0.28.3
1.1.4
1.1.3
1.1.2
1.1.1
1.1.0
1.0.7
1.0.6
1.0.4
1.0.4-p1
1.0.4-p0
1.0.3
1.0.2
1.0.2-p1
1.0.1
1.0.1-p1
1.0.0
0.40.6
0.40.5
0.40.4
0.40.3
0.40.2
0.40.1
0.40.0
0.39.1
0.39.0
0.38.6
0.38.5
0.38.4
0.38.3
0.38.2
0.38.1
0.38.0
0.37.5
0.37.4
0.37.3
0.37.2
0.37.1
0.37.0
0.34.0
0.33.2
0.33.1
0.33.0
0.32.2
0.32.1
0.32.0
0.31.1
0.31.0
0.30.0
0.29.1
0.29.0
0.28.3
0.28.2
0.28.1
0.28.0
0.27.4
0.27.3
0.27.2
0.27.1
0.27.0
0.26.6
0.26.5
0.26.4
0.26.3
0.26.1
0.26.0
Elixir / Erlang version of the SDK for Forge framework.
Current section
Files
Jump to
Current section
Files
lib/forge_sdk/wallet/builder.ex
defmodule ForgeSdk.Wallet.Builder do
@moduledoc """
Macro to create wallet implementations
"""
defmacro __using__(opts) do
quote location: :keep, bind_quoted: [opts: opts] do
alias ForgeSdk.Util.Validator
alias ForgeSdk.Wallet.Util
alias ForgeAbi.{WalletType, WalletInfo}
@type t :: unquote(opts[:mod]).t()
@spec create(t()) :: WalletInfo.t() | {:error, term()}
def create(type) do
type = WalletType.new(Map.from_struct(type))
Util.create(type)
end
@spec sign!(t(), WalletInfo.t(), binary()) :: binary()
def sign!(_type, wallet, data) do
Util.sign!(wallet, data)
end
@spec verify(t(), WalletInfo.t(), binary(), binary()) :: boolean()
def verify(_type, wallet, data, signature) do
Util.verify(wallet, data, signature)
end
@doc """
Convert the wallet type to forge abi wallet type
"""
@spec get_type(t()) :: WalletType.t()
def get_type(type), do: type |> Map.from_struct() |> WalletType.new()
end
end
end