package Ġfinancial . accounting . account . core . model Ċ Ċ import Ġfinancial . shared . building blocks . aggregate . Aggregate Root Ċ import Ġfinancial . shared . building blocks . entity . Identity Ċ import Ġfinancial . shared . value object . Amount Ċ import Ġfinancial . shared . value object . Version Ċ import Ġjava . time . LocalDateTime Ċ Ċ class ĠAccount Balance ( ĊĠĠĠ Ġoverride Ġval Ġidentity : ĠIdentity , ĊĠĠĠ Ġval Ġnumber : ĠString , ĊĠĠĠ Ġval Ġbalance : ĠAmount , ĊĠĠĠ Ġval ĠupdatedAt : ĠLocalDateTime Ċ ) Ġ: ĠAggregate Root < Account Balance > Ġ{ ĊĊĠĠĠ Ġoverride Ġval Ġmodel Version Ġ= ĠVersion . first () ĊĊĠĠĠ Ġfun Ġde bit ( amount : ĠAmount ): ĠAccount Balance Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbalance Ġ= Ġbalance Ġ- Ġamount ĊĊĠĠĠĠĠĠĠ Ġreturn ĠAccount Balance ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġidentity Ġ= Ġidentity , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnumber Ġ= Ġnumber , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbalance Ġ= Ġbalance , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠupdatedAt Ġ= ĠLocalDateTime . now () ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġcredit ( amount : ĠAmount ): ĠAccount Balance Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbalance Ġ= Ġbalance Ġ+ Ġamount ĊĊĠĠĠĠĠĠĠ Ġreturn ĠAccount Balance ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġidentity Ġ= Ġidentity , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnumber Ġ= Ġnumber , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbalance Ġ= Ġbalance , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠupdatedAt Ġ= ĠLocalDateTime . now () ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ }