# RSM Mutual-Credit
## Entries
```rust
enum OfferStatus {
Pending
Canceled
Completed // If it's already accepted
}
struct Offer {
status: OfferStatus,
debtor_pub_key,
creditor_pub_key,
amount,
}
struct Transaction {
debtor_pub_key,
creditor_pub_key,
amount,
timestamp,
}
```
## Zome functions
- `create_offer(amount, receiver)`
- Create `Offer` entry
- Links `Offer` from the debtor and creditor anchors
- [Nice to have] Send message to signal creditor
- `cancel_offer(offer_id)`
- Updates status of the offer
- `accept_offer(offer_id)`
- If the offer is pending,
- Create Transaction
- Link from debtor and creditor anchors to transaction
- [Nice to have] Send message to signal debtor
- `get_balance(agent_address)`
- Get links from my anchor to transactions
- `get_my_offers()`
- Get links from my anchor to offers