-module(bson@binary). -compile(no_auto_import). -export([to_string/1, to_bit_string/1, from_string/1, from_bit_string/1]). -export_type([binary_/0]). -opaque binary_() :: {generic, bitstring()}. -spec to_string(binary_()) -> {ok, binary()} | {error, nil}. to_string(Binary) -> case Binary of {generic, Data} -> gleam@bit_string:to_string(Data) end. -spec to_bit_string(binary_()) -> bitstring(). to_bit_string(Binary) -> case Binary of {generic, Data} -> Data end. -spec from_string(binary()) -> binary_(). from_string(Data) -> {generic, gleam@bit_string:from_string(Data)}. -spec from_bit_string(bitstring()) -> {ok, binary_()} | {error, nil}. from_bit_string(Data) -> case erlang:bit_size(Data) rem 8 of 0 -> {ok, {generic, Data}}; _@1 -> {error, nil} end.