@callback lookup_smart_token( token_a :: term(), token_b :: term(), context :: any(), options :: any() ) :: {:ok, term()} | {:error, term()}
@callback save_smart_token(term :: any(), context :: any(), options :: any()) :: {:ok, term()} | {:error, term()}