tokens() :: %{
optional(:code) => %Boruta.Oauth.Token{
client: Boruta.Oauth.Client.t(),
code_challenge: term(),
code_challenge_hash: term(),
code_challenge_method: term(),
expires_at: term(),
inserted_at: DateTime.t(),
nonce: term(),
redirect_uri: term(),
refresh_token: term(),
resource_owner: term(),
revoked_at: term(),
scope: String.t(),
state: term(),
sub: String.t(),
type: term(),
value: term()
},
optional(:token) => %Boruta.Oauth.Token{
client: Boruta.Oauth.Client.t(),
code_challenge: term(),
code_challenge_hash: term(),
code_challenge_method: term(),
expires_at: term(),
inserted_at: DateTime.t(),
nonce: term(),
redirect_uri: term(),
refresh_token: term(),
resource_owner: term(),
revoked_at: term(),
scope: String.t(),
state: term(),
sub: String.t(),
type: term(),
value: term()
},
optional(:base_token) => %Boruta.Oauth.Token{
client: Boruta.Oauth.Client.t(),
code_challenge: term(),
code_challenge_hash: term(),
code_challenge_method: term(),
expires_at: term(),
inserted_at: DateTime.t(),
nonce: term(),
redirect_uri: term(),
refresh_token: term(),
resource_owner: term(),
revoked_at: term(),
scope: String.t(),
state: term(),
sub: String.t(),
type: term(),
value: term()
}
}