In your design, every address has proposed, received, accepted and rejected which are uint256. Then you can have a structure with these numbers for each address:
struct offerings {
uint256[] proposed;
uint256[] received;
uint256[] accepted;
uint256[] rejected;
}
mapping(address => offerings) public offeringData;
Like this, you will be mapping each address to his own structure with the data.
Hope this helps.