defmodule BitcoinLib.Signing.Psbt.Global.Xpub do defstruct [:fingerprint, :path_elements] alias BitcoinLib.Signing.Psbt.Global.Xpub # TODO: document def parse(<>) do {path_elements, remaining} = remaining |> extract_path_elements([]) {%Xpub{fingerprint: fingerprint, path_elements: Enum.reverse(path_elements)}, remaining} end defp extract_path_elements(<<>> = remaining, elements) do {elements, remaining} end defp extract_path_elements(<>, elements) do extract_path_elements(remaining, [element | elements]) end end