syntax = "proto3";

package fetch.aea.StateUpdate;

message StateUpdateMessage{

    // Performatives and contents
    message Initialize_Performative{
        map<string, float> exchange_params_by_currency_id = 1;
        map<string, float> utility_params_by_good_id = 2;
        map<string, int32> amount_by_currency_id = 3;
        map<string, int32> quantities_by_good_id = 4;
    }

    message Apply_Performative{
        map<string, int32> amount_by_currency_id = 1;
        map<string, int32> quantities_by_good_id = 2;
    }


    // Standard StateUpdateMessage fields
    int32 message_id = 1;
    string dialogue_starter_reference = 2;
    string dialogue_responder_reference = 3;
    int32 target = 4;
    oneof performative{
        Apply_Performative apply = 5;
        Initialize_Performative initialize = 6;
    }
}
