33 Commits

Author SHA1 Message Date
Mark Spanbroek
707ec5f55c vault: rename context -> fund 2025-02-06 16:33:03 +01:00
Mark Spanbroek
2fecf2e741 vault: only allow deposit, transfer, etc when locked 2025-02-06 16:33:03 +01:00
Mark Spanbroek
77d7d5769a vault: reorder tests 2025-02-06 16:33:03 +01:00
Mark Spanbroek
0bd63eafd8 vault: cleanup 2025-02-06 16:33:03 +01:00
Mark Spanbroek
de3a847d7b vault: delete lock all tokens are withdrawn or burned 2025-02-06 16:33:03 +01:00
Mark Spanbroek
9aecbd54d9 vault: disallow designating of flowing tokens 2025-02-06 16:33:03 +01:00
Mark Spanbroek
f90f02cd6d vault: fix flaky time sensitive tests
Ensures that setting of lock and starting of
flow happen in the same block.
Therefore hardhat cannot occasionally increase
the timestamp between the two operations.
This makes predicting the balances over time
much easier.
2025-02-06 16:33:03 +01:00
Mark Spanbroek
85537cdb49 vault: cannot burn flowing tokens 2025-02-06 16:33:03 +01:00
Mark Spanbroek
a120cdf2ab vault: disallow transfer of flowing tokens 2025-02-06 16:33:03 +01:00
Mark Spanbroek
9f22c56026 vault: simplify example flow rates in test 2025-02-06 16:33:03 +01:00
Mark Spanbroek
e9b346a122 vault: allow flows to be diverted to others 2025-02-06 16:33:03 +01:00
Mark Spanbroek
421a1eb5ba vault: change flows over time 2025-02-06 16:33:03 +01:00
Mark Spanbroek
82467f101d vault: make tests a bit more robust 2025-02-06 16:33:03 +01:00
Mark Spanbroek
9105a3530a vault: reject negative flows 2025-02-06 16:33:03 +01:00
Mark Spanbroek
8ee4512080 vault: flow to multiple recipients
- changes balance from uint256 -> uint128
  so that entire Balance can be read or written
  with a single operation
- moves Lock to library
- simplifies lock checks
2025-02-06 16:33:03 +01:00
Mark Spanbroek
9d213993e8 vault: improve naming of public functions 2025-02-06 16:33:03 +01:00
Mark Spanbroek
6417d5b608 vault: allow automine to be disabled in time sensitive tests 2025-02-06 16:33:03 +01:00
Mark Spanbroek
482ff9a57a vault: do not allow flow when lock already expired 2025-02-06 16:33:03 +01:00
Mark Spanbroek
c6ea2b6bd7 vault: reject flow when insufficient tokens available 2025-02-06 16:33:03 +01:00
Mark Spanbroek
27c7ee32c0 vault: stop flowing when lock expires 2025-02-06 16:33:03 +01:00
Mark Spanbroek
cf750b032c vault: designate tokens that flow 2025-02-06 16:33:03 +01:00
Mark Spanbroek
cf30fa35d6 vault: flow tokens from one recipient to the other 2025-02-06 16:33:03 +01:00
Mark Spanbroek
bfc7a8bb19 vault: allow recipient to withdraw 2025-02-06 16:33:03 +01:00
Mark Spanbroek
0afc5bf19e vault: further test for locks 2025-02-06 16:33:03 +01:00
Mark Spanbroek
2eaec23b41 vault: remove duplication in tests 2025-02-06 16:33:03 +01:00
Mark Spanbroek
fbfe599241 vault: simplify test setup 2025-02-06 16:33:03 +01:00
Mark Spanbroek
84c31418b3 vault: lock is deleted upon withdrawal 2025-02-06 16:33:03 +01:00
Mark Spanbroek
a29778de61 vault: lock up tokens until expiry time 2025-02-06 16:33:03 +01:00
Mark Spanbroek
0dfe60dab9 vault: designate tokens for a single recipient 2025-02-06 16:33:03 +01:00
Mark Spanbroek
3a23ab7a40 vault: transfer tokens from one recipient to the other 2025-02-06 16:33:03 +01:00
Mark Spanbroek
bff9a05e4f vault: burning funds 2025-02-06 16:33:03 +01:00
Mark Spanbroek
1a7b0b5c17 vault: change data structure to be recipient oriented 2025-02-06 16:33:03 +01:00
Mark Spanbroek
2d469dc6d1 vault: deposit and withdraw 2025-02-06 16:33:03 +01:00