struct param {
        uint256 amount;
        uint256 percentageBonus;
    }

    struct offerings {
        param proposed;
        param received;
        param accepted;
        param rejected;
    }

    mapping(address => offerings) public offeringData;

Like this, you will be mapping each address to a structure with four fields (proposed, received... etc) each of these fields have two fields (amount and percentageBonus)

you can use it like this, assume the user address is A:

`offeringData[A].proposed.amount` will give you the amount proposed by the user with address A. 

`offeringData[A].proposed.percentageBonus` give you the percentage bonus. Same for the other variables.

You can set these doing, for instance,: `offeringData[A].proposed.amount = value`

Hope this helps.