@type t() :: %{name: String.t(), properties: map()}
@callback create_namespace(t(), String.t(), map()) :: :ok | {:error, String.t()}