@startuml

title lease states (Kea 1.8.0)

agent "Free" as free
note left : not in the lease database

agent "Assigned" as assigned

agent "Assigned expired" as assigned_expired

agent "Declined" as declined

agent "Declined expired" as declined_expired

agent "Expired-Reclaimed" as reclaimed

free ---> assigned : assignment

assigned -> assigned_expired : after valid lifetime
assigned -> assigned : renew query
assigned ---> declined : decline query
assigned -up-> free : release query

declined --> declined_expired : after probation period

assigned_expired -up-> assigned : reuse
declined_expired -up-> assigned : reuse

assigned_expired ---> reclaimed : reclaim
declined_expired ---> free : remove

reclaimed -up-> assigned : reuse
reclaimed -up--> free : remove

declined_expired -[hidden]-> reclaimed

@enduml
