//
// Automatically generated by ipdlc.
// Edit at your own risk
//

#ifndef PMLSTransaction_h
#define PMLSTransaction_h

#include "mozilla/Attributes.h"
#include "IPCMessageStart.h"
#include "mozilla/RefPtr.h"
#include "nsString.h"
#include "nsTArray.h"
#include "nsTHashtable.h"
#include "mozilla/MozPromise.h"
#include "mozilla/OperatorNewExtensions.h"
#include "mozilla/UniquePtr.h"
#include "mozilla/ipc/ByteBuf.h"
#include "mozilla/ipc/FileDescriptor.h"
#include "mozilla/ipc/IPCForwards.h"
#include "mozilla/ipc/Shmem.h"

// Headers for typedefs
#include "mozilla/ipc/IPDLStructMember.h"


//-----------------------------------------------------------------------------
// Declaration of the IPDL type |struct RawBytes|
//
namespace mozilla {
namespace dom {
class RawBytes final
{
private:
    typedef ::uint8_t uint8_t;

public:
#ifdef __clang__
#  pragma clang diagnostic push
#  if __has_warning("-Wdefaulted-function-deleted")
#    pragma clang diagnostic ignored "-Wdefaulted-function-deleted"
#  endif
#endif
    RawBytes() = default;
#ifdef __clang__
#  pragma clang diagnostic pop
#endif

    MOZ_IMPLICIT RawBytes(const nsTArray<uint8_t>& _data) :
        data_(_data)
    {
    }

    MOZ_IMPLICIT RawBytes(nsTArray<uint8_t>&& _data) :
        data_(std::move(_data))
    {
    }

    nsTArray<uint8_t>&
    data()
    {
        return data_;
    }
    const nsTArray<uint8_t>&
    data() const
    {
        return data_;
    }

private:
    ::mozilla::ipc::IPDLStructMember<CopyableTArray<uint8_t>> data_;
};
} // namespace dom
} // namespace mozilla

namespace IPC {
template<>
struct ParamTraits <::mozilla::dom::RawBytes>
{
    typedef ::mozilla::dom::RawBytes paramType;
    static void
    Write(
            IPC::MessageWriter* aWriter,
            const paramType& aVar);
    static IPC::ReadResult<paramType>
    Read(IPC::MessageReader* aReader);
};
} // namespace IPC

namespace mozilla {
namespace dom {
class PMLSTransactionParent;
} // namespace dom
} // namespace mozilla
namespace mozilla {
namespace dom {
class PMLSTransactionChild;
} // namespace dom
} // namespace mozilla

//-----------------------------------------------------------------------------
// Code common to PMLSTransactionChild and PMLSTransactionParent
//
namespace mozilla {
namespace dom {
namespace PMLSTransaction {

nsresult
CreateEndpoints(
        mozilla::ipc::EndpointProcInfo aParentDestInfo,
        mozilla::ipc::EndpointProcInfo aChildDestInfo,
        mozilla::ipc::Endpoint<::mozilla::dom::PMLSTransactionParent>* aParent,
        mozilla::ipc::Endpoint<::mozilla::dom::PMLSTransactionChild>* aChild);

nsresult
CreateEndpoints(
        mozilla::ipc::Endpoint<::mozilla::dom::PMLSTransactionParent>* aParent,
        mozilla::ipc::Endpoint<::mozilla::dom::PMLSTransactionChild>* aChild);

enum MessageType {
    PMLSTransactionStart = PMLSTransactionMsgStart << 16,
    Msg_RequestStateDelete__ID,
    Reply_RequestStateDelete__ID,
    Msg_RequestGroupStateDelete__ID,
    Reply_RequestGroupStateDelete__ID,
    Msg_RequestGenerateIdentityKeypair__ID,
    Reply_RequestGenerateIdentityKeypair__ID,
    Msg_RequestGenerateCredentialBasic__ID,
    Reply_RequestGenerateCredentialBasic__ID,
    Msg_RequestGenerateKeyPackage__ID,
    Reply_RequestGenerateKeyPackage__ID,
    Msg_RequestGroupCreate__ID,
    Reply_RequestGroupCreate__ID,
    Msg_RequestGroupJoin__ID,
    Reply_RequestGroupJoin__ID,
    Msg_RequestGroupAdd__ID,
    Reply_RequestGroupAdd__ID,
    Msg_RequestGroupProposeAdd__ID,
    Reply_RequestGroupProposeAdd__ID,
    Msg_RequestGroupRemove__ID,
    Reply_RequestGroupRemove__ID,
    Msg_RequestGroupProposeRemove__ID,
    Reply_RequestGroupProposeRemove__ID,
    Msg_RequestGroupClose__ID,
    Reply_RequestGroupClose__ID,
    Msg_RequestGroupDetails__ID,
    Reply_RequestGroupDetails__ID,
    Msg_RequestSend__ID,
    Reply_RequestSend__ID,
    Msg_RequestReceive__ID,
    Reply_RequestReceive__ID,
    Msg_RequestHasPendingProposals__ID,
    Reply_RequestHasPendingProposals__ID,
    Msg_RequestClearPendingProposals__ID,
    Reply_RequestClearPendingProposals__ID,
    Msg_RequestHasPendingCommit__ID,
    Reply_RequestHasPendingCommit__ID,
    Msg_RequestClearPendingCommit__ID,
    Reply_RequestClearPendingCommit__ID,
    Msg_RequestApplyPendingCommit__ID,
    Reply_RequestApplyPendingCommit__ID,
    Msg_RequestExportSecret__ID,
    Reply_RequestExportSecret__ID,
    Msg_RequestGetGroupIdentifier__ID,
    Reply_RequestGetGroupIdentifier__ID,
    Msg_RequestGetGroupEpoch__ID,
    Reply_RequestGetGroupEpoch__ID,
    PMLSTransactionEnd
};

mozilla::UniquePtr<IPC::Message>
Msg_RequestStateDelete(IPC::Message::routeid_t routingId);
mozilla::UniquePtr<IPC::Message>
Reply_RequestStateDelete(IPC::Message::routeid_t routingId);

mozilla::UniquePtr<IPC::Message>
Msg_RequestGroupStateDelete(IPC::Message::routeid_t routingId);
mozilla::UniquePtr<IPC::Message>
Reply_RequestGroupStateDelete(IPC::Message::routeid_t routingId);

mozilla::UniquePtr<IPC::Message>
Msg_RequestGenerateIdentityKeypair(IPC::Message::routeid_t routingId);
mozilla::UniquePtr<IPC::Message>
Reply_RequestGenerateIdentityKeypair(IPC::Message::routeid_t routingId);

mozilla::UniquePtr<IPC::Message>
Msg_RequestGenerateCredentialBasic(IPC::Message::routeid_t routingId);
mozilla::UniquePtr<IPC::Message>
Reply_RequestGenerateCredentialBasic(IPC::Message::routeid_t routingId);

mozilla::UniquePtr<IPC::Message>
Msg_RequestGenerateKeyPackage(IPC::Message::routeid_t routingId);
mozilla::UniquePtr<IPC::Message>
Reply_RequestGenerateKeyPackage(IPC::Message::routeid_t routingId);

mozilla::UniquePtr<IPC::Message>
Msg_RequestGroupCreate(IPC::Message::routeid_t routingId);
mozilla::UniquePtr<IPC::Message>
Reply_RequestGroupCreate(IPC::Message::routeid_t routingId);

mozilla::UniquePtr<IPC::Message>
Msg_RequestGroupJoin(IPC::Message::routeid_t routingId);
mozilla::UniquePtr<IPC::Message>
Reply_RequestGroupJoin(IPC::Message::routeid_t routingId);

mozilla::UniquePtr<IPC::Message>
Msg_RequestGroupAdd(IPC::Message::routeid_t routingId);
mozilla::UniquePtr<IPC::Message>
Reply_RequestGroupAdd(IPC::Message::routeid_t routingId);

mozilla::UniquePtr<IPC::Message>
Msg_RequestGroupProposeAdd(IPC::Message::routeid_t routingId);
mozilla::UniquePtr<IPC::Message>
Reply_RequestGroupProposeAdd(IPC::Message::routeid_t routingId);

mozilla::UniquePtr<IPC::Message>
Msg_RequestGroupRemove(IPC::Message::routeid_t routingId);
mozilla::UniquePtr<IPC::Message>
Reply_RequestGroupRemove(IPC::Message::routeid_t routingId);

mozilla::UniquePtr<IPC::Message>
Msg_RequestGroupProposeRemove(IPC::Message::routeid_t routingId);
mozilla::UniquePtr<IPC::Message>
Reply_RequestGroupProposeRemove(IPC::Message::routeid_t routingId);

mozilla::UniquePtr<IPC::Message>
Msg_RequestGroupClose(IPC::Message::routeid_t routingId);
mozilla::UniquePtr<IPC::Message>
Reply_RequestGroupClose(IPC::Message::routeid_t routingId);

mozilla::UniquePtr<IPC::Message>
Msg_RequestGroupDetails(IPC::Message::routeid_t routingId);
mozilla::UniquePtr<IPC::Message>
Reply_RequestGroupDetails(IPC::Message::routeid_t routingId);

mozilla::UniquePtr<IPC::Message>
Msg_RequestSend(IPC::Message::routeid_t routingId);
mozilla::UniquePtr<IPC::Message>
Reply_RequestSend(IPC::Message::routeid_t routingId);

mozilla::UniquePtr<IPC::Message>
Msg_RequestReceive(IPC::Message::routeid_t routingId);
mozilla::UniquePtr<IPC::Message>
Reply_RequestReceive(IPC::Message::routeid_t routingId);

mozilla::UniquePtr<IPC::Message>
Msg_RequestHasPendingProposals(IPC::Message::routeid_t routingId);
mozilla::UniquePtr<IPC::Message>
Reply_RequestHasPendingProposals(IPC::Message::routeid_t routingId);

mozilla::UniquePtr<IPC::Message>
Msg_RequestClearPendingProposals(IPC::Message::routeid_t routingId);
mozilla::UniquePtr<IPC::Message>
Reply_RequestClearPendingProposals(IPC::Message::routeid_t routingId);

mozilla::UniquePtr<IPC::Message>
Msg_RequestHasPendingCommit(IPC::Message::routeid_t routingId);
mozilla::UniquePtr<IPC::Message>
Reply_RequestHasPendingCommit(IPC::Message::routeid_t routingId);

mozilla::UniquePtr<IPC::Message>
Msg_RequestClearPendingCommit(IPC::Message::routeid_t routingId);
mozilla::UniquePtr<IPC::Message>
Reply_RequestClearPendingCommit(IPC::Message::routeid_t routingId);

mozilla::UniquePtr<IPC::Message>
Msg_RequestApplyPendingCommit(IPC::Message::routeid_t routingId);
mozilla::UniquePtr<IPC::Message>
Reply_RequestApplyPendingCommit(IPC::Message::routeid_t routingId);

mozilla::UniquePtr<IPC::Message>
Msg_RequestExportSecret(IPC::Message::routeid_t routingId);
mozilla::UniquePtr<IPC::Message>
Reply_RequestExportSecret(IPC::Message::routeid_t routingId);

mozilla::UniquePtr<IPC::Message>
Msg_RequestGetGroupIdentifier(IPC::Message::routeid_t routingId);
mozilla::UniquePtr<IPC::Message>
Reply_RequestGetGroupIdentifier(IPC::Message::routeid_t routingId);

mozilla::UniquePtr<IPC::Message>
Msg_RequestGetGroupEpoch(IPC::Message::routeid_t routingId);
mozilla::UniquePtr<IPC::Message>
Reply_RequestGetGroupEpoch(IPC::Message::routeid_t routingId);



} // namespace PMLSTransaction
} // namespace dom
} // namespace mozilla

#endif // ifndef PMLSTransaction_h
