syntax = "proto3";

package fetch.aea.fipa;

message FIPAMessage{

    message CFP{
        message Nothing {
        }
        oneof query{
            bytes bytes = 1;
            Nothing nothing = 2;
            bytes query_bytes = 3;
        }
    }
    message Propose{
        repeated bytes proposal = 1;
    }
    message Accept{}

    message MatchAccept{}

    message Decline{}

    message Inform{
        bytes bytes = 1;
    }

    message AcceptWInform{
        bytes bytes = 1;
    }

    message MatchAcceptWInform{
        bytes bytes = 1;
    }

    int32 message_id = 1;
    string dialogue_starter_reference = 2;
    string dialogue_responder_reference = 3;
    int32 target = 4;
    oneof performative{
        CFP cfp = 5;
        Propose propose = 6;
        Accept accept = 7;
        MatchAccept match_accept = 8;
        Decline decline = 9;
        Inform inform = 10;
        AcceptWInform accept_w_inform = 11;
        MatchAcceptWInform match_accept_w_inform = 12;
    }
}
