@spec add(number(), number()) :: {:ok, number()} | {:error, term()}
@spec broadcast_message(reference(), binary(), binary()) :: {:ok, reference()} | {:error, term()}
@spec cleanup(reference()) :: {:ok, reference()} | {:error, term()}
@spec connect_node(reference(), binary()) :: {:ok, reference()} | {:error, term()}
@spec connect_node_by_pubkey(binary()) :: {:ok, reference()} | {:error, term()}
@spec create_node(pid(), boolean()) :: {:ok, reference()} | {:error, term()}
@spec create_ticket(reference()) :: {:ok, binary()} | {:error, term()}
@spec disconnect_node(reference()) :: {:ok} | {:error, term()}
@spec gen_node_addr(reference()) :: {:ok, binary()} | {:error, term()}
@spec generate_secretkey() :: {:ok, binary()} | {:error, term()}
@spec generate_secretkey() :: {:ok, reference()} | {:error, term()}
@spec list_topics(reference()) :: {:ok, [binary()]} | {:error, term()}
@spec send_message(reference(), binary()) :: {:ok, reference()} | {:error, term()}
@spec shutdown(reference()) :: :ok | {:error, term()}
@spec subscribe_to_topic(reference(), binary(), [binary()]) :: {:ok, reference()} | {:error, term()}
@spec unsubscribe_from_topic(reference(), binary()) :: {:ok, reference()} | {:error, term()}