defmodule NearApi.PublicKey do
@moduledoc """
NEAR [Action](https://www.near-sdk.io/zero-to-hero/beginner/actions).
"""
@ed25519_curve 0
use Borsh,
schema: [
key_type: :u8,
data: [32]
]
@typedoc """
Type of the public key struct
"""
@type t :: %__MODULE__{
key_type: integer,
data: String.t()
}
defstruct [
:key_type,
:data
]
def from_string(encoded_key) do
encoded_key |> String.split(":") |> compose_key()
end
defp compose_key([_curve, key]), do: compose_key([key])
defp compose_key([key]), do: %__MODULE__{key_type: @ed25519_curve, data: B58.decode58!(key)}
end