DebtSimplifier
simplifyDebt(map<> balances);
string groupId;
string name;
vector<User> members;
map<> expenses;
map<> balances;
addMember(User&);
removeMember(User&);
notify();
updateGroupBal(fromId, toId, amt);
addExpense();
settlePayment(from, to, amt);
simplifyDebt();
string userId;
string email;
map<string,double> balances;
update(msg);
updateBal(otherId, amt);
Observer
Splitwise
map<> users;
map<> groups;
settleIndividualPayment()<?>
addIndividualExpense()<?>
Expense
string id;
string desc;
double amt;
string paidUserId;
vector<Split> splits;
SplitFactory
getSplitStrat(StrategyType t);
<<Model>>
Split
string amount;
calcSplit(double totalAmt, vector<> userIds, vector<> values);
calcSplit();
SplitType
EQUAL,
EXACT,
PERCENTAGE
by dhruv