// Code generated by protoc-gen-go-grpc. DO NOT EDIT.
// versions:
// - protoc-gen-go-grpc v1.5.1
// - protoc             (unknown)
// source: protocoltypes.proto

package protocoltypes

import (
	context "context"
	grpc "google.golang.org/grpc"
	codes "google.golang.org/grpc/codes"
	status "google.golang.org/grpc/status"
)

// This is a compile-time assertion to ensure that this generated file
// is compatible with the grpc package it is being compiled against.
// Requires gRPC-Go v1.64.0 or later.
const _ = grpc.SupportPackageIsVersion9

const (
	ProtocolService_ServiceExportData_FullMethodName                         = "/weshnet.protocol.v1.ProtocolService/ServiceExportData"
	ProtocolService_ServiceGetConfiguration_FullMethodName                   = "/weshnet.protocol.v1.ProtocolService/ServiceGetConfiguration"
	ProtocolService_ContactRequestReference_FullMethodName                   = "/weshnet.protocol.v1.ProtocolService/ContactRequestReference"
	ProtocolService_ContactRequestDisable_FullMethodName                     = "/weshnet.protocol.v1.ProtocolService/ContactRequestDisable"
	ProtocolService_ContactRequestEnable_FullMethodName                      = "/weshnet.protocol.v1.ProtocolService/ContactRequestEnable"
	ProtocolService_ContactRequestResetReference_FullMethodName              = "/weshnet.protocol.v1.ProtocolService/ContactRequestResetReference"
	ProtocolService_ContactRequestSend_FullMethodName                        = "/weshnet.protocol.v1.ProtocolService/ContactRequestSend"
	ProtocolService_ContactRequestAccept_FullMethodName                      = "/weshnet.protocol.v1.ProtocolService/ContactRequestAccept"
	ProtocolService_ContactRequestDiscard_FullMethodName                     = "/weshnet.protocol.v1.ProtocolService/ContactRequestDiscard"
	ProtocolService_ShareContact_FullMethodName                              = "/weshnet.protocol.v1.ProtocolService/ShareContact"
	ProtocolService_DecodeContact_FullMethodName                             = "/weshnet.protocol.v1.ProtocolService/DecodeContact"
	ProtocolService_ContactBlock_FullMethodName                              = "/weshnet.protocol.v1.ProtocolService/ContactBlock"
	ProtocolService_ContactUnblock_FullMethodName                            = "/weshnet.protocol.v1.ProtocolService/ContactUnblock"
	ProtocolService_ContactAliasKeySend_FullMethodName                       = "/weshnet.protocol.v1.ProtocolService/ContactAliasKeySend"
	ProtocolService_MultiMemberGroupCreate_FullMethodName                    = "/weshnet.protocol.v1.ProtocolService/MultiMemberGroupCreate"
	ProtocolService_MultiMemberGroupJoin_FullMethodName                      = "/weshnet.protocol.v1.ProtocolService/MultiMemberGroupJoin"
	ProtocolService_MultiMemberGroupLeave_FullMethodName                     = "/weshnet.protocol.v1.ProtocolService/MultiMemberGroupLeave"
	ProtocolService_MultiMemberGroupAliasResolverDisclose_FullMethodName     = "/weshnet.protocol.v1.ProtocolService/MultiMemberGroupAliasResolverDisclose"
	ProtocolService_MultiMemberGroupAdminRoleGrant_FullMethodName            = "/weshnet.protocol.v1.ProtocolService/MultiMemberGroupAdminRoleGrant"
	ProtocolService_MultiMemberGroupInvitationCreate_FullMethodName          = "/weshnet.protocol.v1.ProtocolService/MultiMemberGroupInvitationCreate"
	ProtocolService_AppMetadataSend_FullMethodName                           = "/weshnet.protocol.v1.ProtocolService/AppMetadataSend"
	ProtocolService_AppMessageSend_FullMethodName                            = "/weshnet.protocol.v1.ProtocolService/AppMessageSend"
	ProtocolService_GroupMetadataList_FullMethodName                         = "/weshnet.protocol.v1.ProtocolService/GroupMetadataList"
	ProtocolService_GroupMessageList_FullMethodName                          = "/weshnet.protocol.v1.ProtocolService/GroupMessageList"
	ProtocolService_GroupInfo_FullMethodName                                 = "/weshnet.protocol.v1.ProtocolService/GroupInfo"
	ProtocolService_ActivateGroup_FullMethodName                             = "/weshnet.protocol.v1.ProtocolService/ActivateGroup"
	ProtocolService_DeactivateGroup_FullMethodName                           = "/weshnet.protocol.v1.ProtocolService/DeactivateGroup"
	ProtocolService_GroupDeviceStatus_FullMethodName                         = "/weshnet.protocol.v1.ProtocolService/GroupDeviceStatus"
	ProtocolService_DebugListGroups_FullMethodName                           = "/weshnet.protocol.v1.ProtocolService/DebugListGroups"
	ProtocolService_DebugInspectGroupStore_FullMethodName                    = "/weshnet.protocol.v1.ProtocolService/DebugInspectGroupStore"
	ProtocolService_DebugGroup_FullMethodName                                = "/weshnet.protocol.v1.ProtocolService/DebugGroup"
	ProtocolService_SystemInfo_FullMethodName                                = "/weshnet.protocol.v1.ProtocolService/SystemInfo"
	ProtocolService_CredentialVerificationServiceInitFlow_FullMethodName     = "/weshnet.protocol.v1.ProtocolService/CredentialVerificationServiceInitFlow"
	ProtocolService_CredentialVerificationServiceCompleteFlow_FullMethodName = "/weshnet.protocol.v1.ProtocolService/CredentialVerificationServiceCompleteFlow"
	ProtocolService_VerifiedCredentialsList_FullMethodName                   = "/weshnet.protocol.v1.ProtocolService/VerifiedCredentialsList"
	ProtocolService_ReplicationServiceRegisterGroup_FullMethodName           = "/weshnet.protocol.v1.ProtocolService/ReplicationServiceRegisterGroup"
	ProtocolService_PeerList_FullMethodName                                  = "/weshnet.protocol.v1.ProtocolService/PeerList"
	ProtocolService_OutOfStoreReceive_FullMethodName                         = "/weshnet.protocol.v1.ProtocolService/OutOfStoreReceive"
	ProtocolService_OutOfStoreSeal_FullMethodName                            = "/weshnet.protocol.v1.ProtocolService/OutOfStoreSeal"
	ProtocolService_RefreshContactRequest_FullMethodName                     = "/weshnet.protocol.v1.ProtocolService/RefreshContactRequest"
)

// ProtocolServiceClient is the client API for ProtocolService service.
//
// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.
//
// ProtocolService is the top-level API to manage the Wesh protocol service.
// Each active Wesh protocol service is considered as a Wesh device and is associated with a Wesh user.
type ProtocolServiceClient interface {
	// ServiceExportData exports the current data of the protocol service
	ServiceExportData(ctx context.Context, in *ServiceExportData_Request, opts ...grpc.CallOption) (grpc.ServerStreamingClient[ServiceExportData_Reply], error)
	// ServiceGetConfiguration gets the current configuration of the protocol service
	ServiceGetConfiguration(ctx context.Context, in *ServiceGetConfiguration_Request, opts ...grpc.CallOption) (*ServiceGetConfiguration_Reply, error)
	// ContactRequestReference retrieves the information required to create a reference (ie. included in a shareable link) to the current account
	ContactRequestReference(ctx context.Context, in *ContactRequestReference_Request, opts ...grpc.CallOption) (*ContactRequestReference_Reply, error)
	// ContactRequestDisable disables incoming contact requests
	ContactRequestDisable(ctx context.Context, in *ContactRequestDisable_Request, opts ...grpc.CallOption) (*ContactRequestDisable_Reply, error)
	// ContactRequestEnable enables incoming contact requests
	ContactRequestEnable(ctx context.Context, in *ContactRequestEnable_Request, opts ...grpc.CallOption) (*ContactRequestEnable_Reply, error)
	// ContactRequestResetReference changes the contact request reference
	ContactRequestResetReference(ctx context.Context, in *ContactRequestResetReference_Request, opts ...grpc.CallOption) (*ContactRequestResetReference_Reply, error)
	// ContactRequestSend attempt to send a contact request
	ContactRequestSend(ctx context.Context, in *ContactRequestSend_Request, opts ...grpc.CallOption) (*ContactRequestSend_Reply, error)
	// ContactRequestAccept accepts a contact request
	ContactRequestAccept(ctx context.Context, in *ContactRequestAccept_Request, opts ...grpc.CallOption) (*ContactRequestAccept_Reply, error)
	// ContactRequestDiscard ignores a contact request, without informing the other user
	ContactRequestDiscard(ctx context.Context, in *ContactRequestDiscard_Request, opts ...grpc.CallOption) (*ContactRequestDiscard_Reply, error)
	// ShareContact uses ContactRequestReference to get the contact information for the current account and
	// returns the Protobuf encoding of a shareable contact which you can further encode and share. If needed, this
	// will reset the contact request reference and enable contact requests. To decode the result, see DecodeContact.
	ShareContact(ctx context.Context, in *ShareContact_Request, opts ...grpc.CallOption) (*ShareContact_Reply, error)
	// DecodeContact decodes the Protobuf encoding of a shareable contact which was returned by ShareContact.
	DecodeContact(ctx context.Context, in *DecodeContact_Request, opts ...grpc.CallOption) (*DecodeContact_Reply, error)
	// ContactBlock blocks a contact from sending requests
	ContactBlock(ctx context.Context, in *ContactBlock_Request, opts ...grpc.CallOption) (*ContactBlock_Reply, error)
	// ContactUnblock unblocks a contact from sending requests
	ContactUnblock(ctx context.Context, in *ContactUnblock_Request, opts ...grpc.CallOption) (*ContactUnblock_Reply, error)
	// ContactAliasKeySend send an alias key to a contact, the contact will be able to assert that your account is being present on a multi-member group
	ContactAliasKeySend(ctx context.Context, in *ContactAliasKeySend_Request, opts ...grpc.CallOption) (*ContactAliasKeySend_Reply, error)
	// MultiMemberGroupCreate creates a new multi-member group
	MultiMemberGroupCreate(ctx context.Context, in *MultiMemberGroupCreate_Request, opts ...grpc.CallOption) (*MultiMemberGroupCreate_Reply, error)
	// MultiMemberGroupJoin joins a multi-member group
	MultiMemberGroupJoin(ctx context.Context, in *MultiMemberGroupJoin_Request, opts ...grpc.CallOption) (*MultiMemberGroupJoin_Reply, error)
	// MultiMemberGroupLeave leaves a multi-member group
	MultiMemberGroupLeave(ctx context.Context, in *MultiMemberGroupLeave_Request, opts ...grpc.CallOption) (*MultiMemberGroupLeave_Reply, error)
	// MultiMemberGroupAliasResolverDisclose discloses your alias resolver key
	MultiMemberGroupAliasResolverDisclose(ctx context.Context, in *MultiMemberGroupAliasResolverDisclose_Request, opts ...grpc.CallOption) (*MultiMemberGroupAliasResolverDisclose_Reply, error)
	// MultiMemberGroupAdminRoleGrant grants an admin role to a group member
	MultiMemberGroupAdminRoleGrant(ctx context.Context, in *MultiMemberGroupAdminRoleGrant_Request, opts ...grpc.CallOption) (*MultiMemberGroupAdminRoleGrant_Reply, error)
	// MultiMemberGroupInvitationCreate creates an invitation to a multi-member group
	MultiMemberGroupInvitationCreate(ctx context.Context, in *MultiMemberGroupInvitationCreate_Request, opts ...grpc.CallOption) (*MultiMemberGroupInvitationCreate_Reply, error)
	// AppMetadataSend adds an app event to the metadata store, the message is encrypted using a symmetric key and readable by future group members
	AppMetadataSend(ctx context.Context, in *AppMetadataSend_Request, opts ...grpc.CallOption) (*AppMetadataSend_Reply, error)
	// AppMessageSend adds an app event to the message store, the message is encrypted using a derived key and readable by current group members
	AppMessageSend(ctx context.Context, in *AppMessageSend_Request, opts ...grpc.CallOption) (*AppMessageSend_Reply, error)
	// GroupMetadataList replays previous and subscribes to new metadata events from the group
	GroupMetadataList(ctx context.Context, in *GroupMetadataList_Request, opts ...grpc.CallOption) (grpc.ServerStreamingClient[GroupMetadataEvent], error)
	// GroupMessageList replays previous and subscribes to new message events from the group
	GroupMessageList(ctx context.Context, in *GroupMessageList_Request, opts ...grpc.CallOption) (grpc.ServerStreamingClient[GroupMessageEvent], error)
	// GroupInfo retrieves information about a group
	GroupInfo(ctx context.Context, in *GroupInfo_Request, opts ...grpc.CallOption) (*GroupInfo_Reply, error)
	// ActivateGroup explicitly opens a group
	ActivateGroup(ctx context.Context, in *ActivateGroup_Request, opts ...grpc.CallOption) (*ActivateGroup_Reply, error)
	// DeactivateGroup closes a group
	DeactivateGroup(ctx context.Context, in *DeactivateGroup_Request, opts ...grpc.CallOption) (*DeactivateGroup_Reply, error)
	// GroupDeviceStatus monitor device status
	GroupDeviceStatus(ctx context.Context, in *GroupDeviceStatus_Request, opts ...grpc.CallOption) (grpc.ServerStreamingClient[GroupDeviceStatus_Reply], error)
	DebugListGroups(ctx context.Context, in *DebugListGroups_Request, opts ...grpc.CallOption) (grpc.ServerStreamingClient[DebugListGroups_Reply], error)
	DebugInspectGroupStore(ctx context.Context, in *DebugInspectGroupStore_Request, opts ...grpc.CallOption) (grpc.ServerStreamingClient[DebugInspectGroupStore_Reply], error)
	DebugGroup(ctx context.Context, in *DebugGroup_Request, opts ...grpc.CallOption) (*DebugGroup_Reply, error)
	SystemInfo(ctx context.Context, in *SystemInfo_Request, opts ...grpc.CallOption) (*SystemInfo_Reply, error)
	// CredentialVerificationServiceInitFlow Initialize a credential verification flow
	CredentialVerificationServiceInitFlow(ctx context.Context, in *CredentialVerificationServiceInitFlow_Request, opts ...grpc.CallOption) (*CredentialVerificationServiceInitFlow_Reply, error)
	// CredentialVerificationServiceCompleteFlow Completes a credential verification flow
	CredentialVerificationServiceCompleteFlow(ctx context.Context, in *CredentialVerificationServiceCompleteFlow_Request, opts ...grpc.CallOption) (*CredentialVerificationServiceCompleteFlow_Reply, error)
	// VerifiedCredentialsList Retrieves the list of verified credentials
	VerifiedCredentialsList(ctx context.Context, in *VerifiedCredentialsList_Request, opts ...grpc.CallOption) (grpc.ServerStreamingClient[VerifiedCredentialsList_Reply], error)
	// ReplicationServiceRegisterGroup Asks a replication service to distribute a group contents
	ReplicationServiceRegisterGroup(ctx context.Context, in *ReplicationServiceRegisterGroup_Request, opts ...grpc.CallOption) (*ReplicationServiceRegisterGroup_Reply, error)
	// PeerList returns a list of P2P peers
	PeerList(ctx context.Context, in *PeerList_Request, opts ...grpc.CallOption) (*PeerList_Reply, error)
	// OutOfStoreReceive parses a payload received outside a synchronized store
	OutOfStoreReceive(ctx context.Context, in *OutOfStoreReceive_Request, opts ...grpc.CallOption) (*OutOfStoreReceive_Reply, error)
	// OutOfStoreSeal creates a payload of a message present in store to be sent outside a synchronized store
	OutOfStoreSeal(ctx context.Context, in *OutOfStoreSeal_Request, opts ...grpc.CallOption) (*OutOfStoreSeal_Reply, error)
	// RefreshContactRequest try to refresh the contact request for the given contact
	RefreshContactRequest(ctx context.Context, in *RefreshContactRequest_Request, opts ...grpc.CallOption) (*RefreshContactRequest_Reply, error)
}

type protocolServiceClient struct {
	cc grpc.ClientConnInterface
}

func NewProtocolServiceClient(cc grpc.ClientConnInterface) ProtocolServiceClient {
	return &protocolServiceClient{cc}
}

func (c *protocolServiceClient) ServiceExportData(ctx context.Context, in *ServiceExportData_Request, opts ...grpc.CallOption) (grpc.ServerStreamingClient[ServiceExportData_Reply], error) {
	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
	stream, err := c.cc.NewStream(ctx, &ProtocolService_ServiceDesc.Streams[0], ProtocolService_ServiceExportData_FullMethodName, cOpts...)
	if err != nil {
		return nil, err
	}
	x := &grpc.GenericClientStream[ServiceExportData_Request, ServiceExportData_Reply]{ClientStream: stream}
	if err := x.ClientStream.SendMsg(in); err != nil {
		return nil, err
	}
	if err := x.ClientStream.CloseSend(); err != nil {
		return nil, err
	}
	return x, nil
}

// This type alias is provided for backwards compatibility with existing code that references the prior non-generic stream type by name.
type ProtocolService_ServiceExportDataClient = grpc.ServerStreamingClient[ServiceExportData_Reply]

func (c *protocolServiceClient) ServiceGetConfiguration(ctx context.Context, in *ServiceGetConfiguration_Request, opts ...grpc.CallOption) (*ServiceGetConfiguration_Reply, error) {
	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
	out := new(ServiceGetConfiguration_Reply)
	err := c.cc.Invoke(ctx, ProtocolService_ServiceGetConfiguration_FullMethodName, in, out, cOpts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *protocolServiceClient) ContactRequestReference(ctx context.Context, in *ContactRequestReference_Request, opts ...grpc.CallOption) (*ContactRequestReference_Reply, error) {
	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
	out := new(ContactRequestReference_Reply)
	err := c.cc.Invoke(ctx, ProtocolService_ContactRequestReference_FullMethodName, in, out, cOpts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *protocolServiceClient) ContactRequestDisable(ctx context.Context, in *ContactRequestDisable_Request, opts ...grpc.CallOption) (*ContactRequestDisable_Reply, error) {
	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
	out := new(ContactRequestDisable_Reply)
	err := c.cc.Invoke(ctx, ProtocolService_ContactRequestDisable_FullMethodName, in, out, cOpts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *protocolServiceClient) ContactRequestEnable(ctx context.Context, in *ContactRequestEnable_Request, opts ...grpc.CallOption) (*ContactRequestEnable_Reply, error) {
	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
	out := new(ContactRequestEnable_Reply)
	err := c.cc.Invoke(ctx, ProtocolService_ContactRequestEnable_FullMethodName, in, out, cOpts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *protocolServiceClient) ContactRequestResetReference(ctx context.Context, in *ContactRequestResetReference_Request, opts ...grpc.CallOption) (*ContactRequestResetReference_Reply, error) {
	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
	out := new(ContactRequestResetReference_Reply)
	err := c.cc.Invoke(ctx, ProtocolService_ContactRequestResetReference_FullMethodName, in, out, cOpts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *protocolServiceClient) ContactRequestSend(ctx context.Context, in *ContactRequestSend_Request, opts ...grpc.CallOption) (*ContactRequestSend_Reply, error) {
	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
	out := new(ContactRequestSend_Reply)
	err := c.cc.Invoke(ctx, ProtocolService_ContactRequestSend_FullMethodName, in, out, cOpts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *protocolServiceClient) ContactRequestAccept(ctx context.Context, in *ContactRequestAccept_Request, opts ...grpc.CallOption) (*ContactRequestAccept_Reply, error) {
	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
	out := new(ContactRequestAccept_Reply)
	err := c.cc.Invoke(ctx, ProtocolService_ContactRequestAccept_FullMethodName, in, out, cOpts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *protocolServiceClient) ContactRequestDiscard(ctx context.Context, in *ContactRequestDiscard_Request, opts ...grpc.CallOption) (*ContactRequestDiscard_Reply, error) {
	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
	out := new(ContactRequestDiscard_Reply)
	err := c.cc.Invoke(ctx, ProtocolService_ContactRequestDiscard_FullMethodName, in, out, cOpts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *protocolServiceClient) ShareContact(ctx context.Context, in *ShareContact_Request, opts ...grpc.CallOption) (*ShareContact_Reply, error) {
	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
	out := new(ShareContact_Reply)
	err := c.cc.Invoke(ctx, ProtocolService_ShareContact_FullMethodName, in, out, cOpts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *protocolServiceClient) DecodeContact(ctx context.Context, in *DecodeContact_Request, opts ...grpc.CallOption) (*DecodeContact_Reply, error) {
	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
	out := new(DecodeContact_Reply)
	err := c.cc.Invoke(ctx, ProtocolService_DecodeContact_FullMethodName, in, out, cOpts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *protocolServiceClient) ContactBlock(ctx context.Context, in *ContactBlock_Request, opts ...grpc.CallOption) (*ContactBlock_Reply, error) {
	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
	out := new(ContactBlock_Reply)
	err := c.cc.Invoke(ctx, ProtocolService_ContactBlock_FullMethodName, in, out, cOpts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *protocolServiceClient) ContactUnblock(ctx context.Context, in *ContactUnblock_Request, opts ...grpc.CallOption) (*ContactUnblock_Reply, error) {
	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
	out := new(ContactUnblock_Reply)
	err := c.cc.Invoke(ctx, ProtocolService_ContactUnblock_FullMethodName, in, out, cOpts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *protocolServiceClient) ContactAliasKeySend(ctx context.Context, in *ContactAliasKeySend_Request, opts ...grpc.CallOption) (*ContactAliasKeySend_Reply, error) {
	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
	out := new(ContactAliasKeySend_Reply)
	err := c.cc.Invoke(ctx, ProtocolService_ContactAliasKeySend_FullMethodName, in, out, cOpts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *protocolServiceClient) MultiMemberGroupCreate(ctx context.Context, in *MultiMemberGroupCreate_Request, opts ...grpc.CallOption) (*MultiMemberGroupCreate_Reply, error) {
	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
	out := new(MultiMemberGroupCreate_Reply)
	err := c.cc.Invoke(ctx, ProtocolService_MultiMemberGroupCreate_FullMethodName, in, out, cOpts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *protocolServiceClient) MultiMemberGroupJoin(ctx context.Context, in *MultiMemberGroupJoin_Request, opts ...grpc.CallOption) (*MultiMemberGroupJoin_Reply, error) {
	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
	out := new(MultiMemberGroupJoin_Reply)
	err := c.cc.Invoke(ctx, ProtocolService_MultiMemberGroupJoin_FullMethodName, in, out, cOpts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *protocolServiceClient) MultiMemberGroupLeave(ctx context.Context, in *MultiMemberGroupLeave_Request, opts ...grpc.CallOption) (*MultiMemberGroupLeave_Reply, error) {
	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
	out := new(MultiMemberGroupLeave_Reply)
	err := c.cc.Invoke(ctx, ProtocolService_MultiMemberGroupLeave_FullMethodName, in, out, cOpts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *protocolServiceClient) MultiMemberGroupAliasResolverDisclose(ctx context.Context, in *MultiMemberGroupAliasResolverDisclose_Request, opts ...grpc.CallOption) (*MultiMemberGroupAliasResolverDisclose_Reply, error) {
	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
	out := new(MultiMemberGroupAliasResolverDisclose_Reply)
	err := c.cc.Invoke(ctx, ProtocolService_MultiMemberGroupAliasResolverDisclose_FullMethodName, in, out, cOpts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *protocolServiceClient) MultiMemberGroupAdminRoleGrant(ctx context.Context, in *MultiMemberGroupAdminRoleGrant_Request, opts ...grpc.CallOption) (*MultiMemberGroupAdminRoleGrant_Reply, error) {
	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
	out := new(MultiMemberGroupAdminRoleGrant_Reply)
	err := c.cc.Invoke(ctx, ProtocolService_MultiMemberGroupAdminRoleGrant_FullMethodName, in, out, cOpts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *protocolServiceClient) MultiMemberGroupInvitationCreate(ctx context.Context, in *MultiMemberGroupInvitationCreate_Request, opts ...grpc.CallOption) (*MultiMemberGroupInvitationCreate_Reply, error) {
	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
	out := new(MultiMemberGroupInvitationCreate_Reply)
	err := c.cc.Invoke(ctx, ProtocolService_MultiMemberGroupInvitationCreate_FullMethodName, in, out, cOpts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *protocolServiceClient) AppMetadataSend(ctx context.Context, in *AppMetadataSend_Request, opts ...grpc.CallOption) (*AppMetadataSend_Reply, error) {
	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
	out := new(AppMetadataSend_Reply)
	err := c.cc.Invoke(ctx, ProtocolService_AppMetadataSend_FullMethodName, in, out, cOpts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *protocolServiceClient) AppMessageSend(ctx context.Context, in *AppMessageSend_Request, opts ...grpc.CallOption) (*AppMessageSend_Reply, error) {
	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
	out := new(AppMessageSend_Reply)
	err := c.cc.Invoke(ctx, ProtocolService_AppMessageSend_FullMethodName, in, out, cOpts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *protocolServiceClient) GroupMetadataList(ctx context.Context, in *GroupMetadataList_Request, opts ...grpc.CallOption) (grpc.ServerStreamingClient[GroupMetadataEvent], error) {
	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
	stream, err := c.cc.NewStream(ctx, &ProtocolService_ServiceDesc.Streams[1], ProtocolService_GroupMetadataList_FullMethodName, cOpts...)
	if err != nil {
		return nil, err
	}
	x := &grpc.GenericClientStream[GroupMetadataList_Request, GroupMetadataEvent]{ClientStream: stream}
	if err := x.ClientStream.SendMsg(in); err != nil {
		return nil, err
	}
	if err := x.ClientStream.CloseSend(); err != nil {
		return nil, err
	}
	return x, nil
}

// This type alias is provided for backwards compatibility with existing code that references the prior non-generic stream type by name.
type ProtocolService_GroupMetadataListClient = grpc.ServerStreamingClient[GroupMetadataEvent]

func (c *protocolServiceClient) GroupMessageList(ctx context.Context, in *GroupMessageList_Request, opts ...grpc.CallOption) (grpc.ServerStreamingClient[GroupMessageEvent], error) {
	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
	stream, err := c.cc.NewStream(ctx, &ProtocolService_ServiceDesc.Streams[2], ProtocolService_GroupMessageList_FullMethodName, cOpts...)
	if err != nil {
		return nil, err
	}
	x := &grpc.GenericClientStream[GroupMessageList_Request, GroupMessageEvent]{ClientStream: stream}
	if err := x.ClientStream.SendMsg(in); err != nil {
		return nil, err
	}
	if err := x.ClientStream.CloseSend(); err != nil {
		return nil, err
	}
	return x, nil
}

// This type alias is provided for backwards compatibility with existing code that references the prior non-generic stream type by name.
type ProtocolService_GroupMessageListClient = grpc.ServerStreamingClient[GroupMessageEvent]

func (c *protocolServiceClient) GroupInfo(ctx context.Context, in *GroupInfo_Request, opts ...grpc.CallOption) (*GroupInfo_Reply, error) {
	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
	out := new(GroupInfo_Reply)
	err := c.cc.Invoke(ctx, ProtocolService_GroupInfo_FullMethodName, in, out, cOpts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *protocolServiceClient) ActivateGroup(ctx context.Context, in *ActivateGroup_Request, opts ...grpc.CallOption) (*ActivateGroup_Reply, error) {
	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
	out := new(ActivateGroup_Reply)
	err := c.cc.Invoke(ctx, ProtocolService_ActivateGroup_FullMethodName, in, out, cOpts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *protocolServiceClient) DeactivateGroup(ctx context.Context, in *DeactivateGroup_Request, opts ...grpc.CallOption) (*DeactivateGroup_Reply, error) {
	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
	out := new(DeactivateGroup_Reply)
	err := c.cc.Invoke(ctx, ProtocolService_DeactivateGroup_FullMethodName, in, out, cOpts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *protocolServiceClient) GroupDeviceStatus(ctx context.Context, in *GroupDeviceStatus_Request, opts ...grpc.CallOption) (grpc.ServerStreamingClient[GroupDeviceStatus_Reply], error) {
	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
	stream, err := c.cc.NewStream(ctx, &ProtocolService_ServiceDesc.Streams[3], ProtocolService_GroupDeviceStatus_FullMethodName, cOpts...)
	if err != nil {
		return nil, err
	}
	x := &grpc.GenericClientStream[GroupDeviceStatus_Request, GroupDeviceStatus_Reply]{ClientStream: stream}
	if err := x.ClientStream.SendMsg(in); err != nil {
		return nil, err
	}
	if err := x.ClientStream.CloseSend(); err != nil {
		return nil, err
	}
	return x, nil
}

// This type alias is provided for backwards compatibility with existing code that references the prior non-generic stream type by name.
type ProtocolService_GroupDeviceStatusClient = grpc.ServerStreamingClient[GroupDeviceStatus_Reply]

func (c *protocolServiceClient) DebugListGroups(ctx context.Context, in *DebugListGroups_Request, opts ...grpc.CallOption) (grpc.ServerStreamingClient[DebugListGroups_Reply], error) {
	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
	stream, err := c.cc.NewStream(ctx, &ProtocolService_ServiceDesc.Streams[4], ProtocolService_DebugListGroups_FullMethodName, cOpts...)
	if err != nil {
		return nil, err
	}
	x := &grpc.GenericClientStream[DebugListGroups_Request, DebugListGroups_Reply]{ClientStream: stream}
	if err := x.ClientStream.SendMsg(in); err != nil {
		return nil, err
	}
	if err := x.ClientStream.CloseSend(); err != nil {
		return nil, err
	}
	return x, nil
}

// This type alias is provided for backwards compatibility with existing code that references the prior non-generic stream type by name.
type ProtocolService_DebugListGroupsClient = grpc.ServerStreamingClient[DebugListGroups_Reply]

func (c *protocolServiceClient) DebugInspectGroupStore(ctx context.Context, in *DebugInspectGroupStore_Request, opts ...grpc.CallOption) (grpc.ServerStreamingClient[DebugInspectGroupStore_Reply], error) {
	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
	stream, err := c.cc.NewStream(ctx, &ProtocolService_ServiceDesc.Streams[5], ProtocolService_DebugInspectGroupStore_FullMethodName, cOpts...)
	if err != nil {
		return nil, err
	}
	x := &grpc.GenericClientStream[DebugInspectGroupStore_Request, DebugInspectGroupStore_Reply]{ClientStream: stream}
	if err := x.ClientStream.SendMsg(in); err != nil {
		return nil, err
	}
	if err := x.ClientStream.CloseSend(); err != nil {
		return nil, err
	}
	return x, nil
}

// This type alias is provided for backwards compatibility with existing code that references the prior non-generic stream type by name.
type ProtocolService_DebugInspectGroupStoreClient = grpc.ServerStreamingClient[DebugInspectGroupStore_Reply]

func (c *protocolServiceClient) DebugGroup(ctx context.Context, in *DebugGroup_Request, opts ...grpc.CallOption) (*DebugGroup_Reply, error) {
	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
	out := new(DebugGroup_Reply)
	err := c.cc.Invoke(ctx, ProtocolService_DebugGroup_FullMethodName, in, out, cOpts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *protocolServiceClient) SystemInfo(ctx context.Context, in *SystemInfo_Request, opts ...grpc.CallOption) (*SystemInfo_Reply, error) {
	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
	out := new(SystemInfo_Reply)
	err := c.cc.Invoke(ctx, ProtocolService_SystemInfo_FullMethodName, in, out, cOpts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *protocolServiceClient) CredentialVerificationServiceInitFlow(ctx context.Context, in *CredentialVerificationServiceInitFlow_Request, opts ...grpc.CallOption) (*CredentialVerificationServiceInitFlow_Reply, error) {
	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
	out := new(CredentialVerificationServiceInitFlow_Reply)
	err := c.cc.Invoke(ctx, ProtocolService_CredentialVerificationServiceInitFlow_FullMethodName, in, out, cOpts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *protocolServiceClient) CredentialVerificationServiceCompleteFlow(ctx context.Context, in *CredentialVerificationServiceCompleteFlow_Request, opts ...grpc.CallOption) (*CredentialVerificationServiceCompleteFlow_Reply, error) {
	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
	out := new(CredentialVerificationServiceCompleteFlow_Reply)
	err := c.cc.Invoke(ctx, ProtocolService_CredentialVerificationServiceCompleteFlow_FullMethodName, in, out, cOpts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *protocolServiceClient) VerifiedCredentialsList(ctx context.Context, in *VerifiedCredentialsList_Request, opts ...grpc.CallOption) (grpc.ServerStreamingClient[VerifiedCredentialsList_Reply], error) {
	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
	stream, err := c.cc.NewStream(ctx, &ProtocolService_ServiceDesc.Streams[6], ProtocolService_VerifiedCredentialsList_FullMethodName, cOpts...)
	if err != nil {
		return nil, err
	}
	x := &grpc.GenericClientStream[VerifiedCredentialsList_Request, VerifiedCredentialsList_Reply]{ClientStream: stream}
	if err := x.ClientStream.SendMsg(in); err != nil {
		return nil, err
	}
	if err := x.ClientStream.CloseSend(); err != nil {
		return nil, err
	}
	return x, nil
}

// This type alias is provided for backwards compatibility with existing code that references the prior non-generic stream type by name.
type ProtocolService_VerifiedCredentialsListClient = grpc.ServerStreamingClient[VerifiedCredentialsList_Reply]

func (c *protocolServiceClient) ReplicationServiceRegisterGroup(ctx context.Context, in *ReplicationServiceRegisterGroup_Request, opts ...grpc.CallOption) (*ReplicationServiceRegisterGroup_Reply, error) {
	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
	out := new(ReplicationServiceRegisterGroup_Reply)
	err := c.cc.Invoke(ctx, ProtocolService_ReplicationServiceRegisterGroup_FullMethodName, in, out, cOpts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *protocolServiceClient) PeerList(ctx context.Context, in *PeerList_Request, opts ...grpc.CallOption) (*PeerList_Reply, error) {
	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
	out := new(PeerList_Reply)
	err := c.cc.Invoke(ctx, ProtocolService_PeerList_FullMethodName, in, out, cOpts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *protocolServiceClient) OutOfStoreReceive(ctx context.Context, in *OutOfStoreReceive_Request, opts ...grpc.CallOption) (*OutOfStoreReceive_Reply, error) {
	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
	out := new(OutOfStoreReceive_Reply)
	err := c.cc.Invoke(ctx, ProtocolService_OutOfStoreReceive_FullMethodName, in, out, cOpts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *protocolServiceClient) OutOfStoreSeal(ctx context.Context, in *OutOfStoreSeal_Request, opts ...grpc.CallOption) (*OutOfStoreSeal_Reply, error) {
	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
	out := new(OutOfStoreSeal_Reply)
	err := c.cc.Invoke(ctx, ProtocolService_OutOfStoreSeal_FullMethodName, in, out, cOpts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *protocolServiceClient) RefreshContactRequest(ctx context.Context, in *RefreshContactRequest_Request, opts ...grpc.CallOption) (*RefreshContactRequest_Reply, error) {
	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
	out := new(RefreshContactRequest_Reply)
	err := c.cc.Invoke(ctx, ProtocolService_RefreshContactRequest_FullMethodName, in, out, cOpts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

// ProtocolServiceServer is the server API for ProtocolService service.
// All implementations must embed UnimplementedProtocolServiceServer
// for forward compatibility.
//
// ProtocolService is the top-level API to manage the Wesh protocol service.
// Each active Wesh protocol service is considered as a Wesh device and is associated with a Wesh user.
type ProtocolServiceServer interface {
	// ServiceExportData exports the current data of the protocol service
	ServiceExportData(*ServiceExportData_Request, grpc.ServerStreamingServer[ServiceExportData_Reply]) error
	// ServiceGetConfiguration gets the current configuration of the protocol service
	ServiceGetConfiguration(context.Context, *ServiceGetConfiguration_Request) (*ServiceGetConfiguration_Reply, error)
	// ContactRequestReference retrieves the information required to create a reference (ie. included in a shareable link) to the current account
	ContactRequestReference(context.Context, *ContactRequestReference_Request) (*ContactRequestReference_Reply, error)
	// ContactRequestDisable disables incoming contact requests
	ContactRequestDisable(context.Context, *ContactRequestDisable_Request) (*ContactRequestDisable_Reply, error)
	// ContactRequestEnable enables incoming contact requests
	ContactRequestEnable(context.Context, *ContactRequestEnable_Request) (*ContactRequestEnable_Reply, error)
	// ContactRequestResetReference changes the contact request reference
	ContactRequestResetReference(context.Context, *ContactRequestResetReference_Request) (*ContactRequestResetReference_Reply, error)
	// ContactRequestSend attempt to send a contact request
	ContactRequestSend(context.Context, *ContactRequestSend_Request) (*ContactRequestSend_Reply, error)
	// ContactRequestAccept accepts a contact request
	ContactRequestAccept(context.Context, *ContactRequestAccept_Request) (*ContactRequestAccept_Reply, error)
	// ContactRequestDiscard ignores a contact request, without informing the other user
	ContactRequestDiscard(context.Context, *ContactRequestDiscard_Request) (*ContactRequestDiscard_Reply, error)
	// ShareContact uses ContactRequestReference to get the contact information for the current account and
	// returns the Protobuf encoding of a shareable contact which you can further encode and share. If needed, this
	// will reset the contact request reference and enable contact requests. To decode the result, see DecodeContact.
	ShareContact(context.Context, *ShareContact_Request) (*ShareContact_Reply, error)
	// DecodeContact decodes the Protobuf encoding of a shareable contact which was returned by ShareContact.
	DecodeContact(context.Context, *DecodeContact_Request) (*DecodeContact_Reply, error)
	// ContactBlock blocks a contact from sending requests
	ContactBlock(context.Context, *ContactBlock_Request) (*ContactBlock_Reply, error)
	// ContactUnblock unblocks a contact from sending requests
	ContactUnblock(context.Context, *ContactUnblock_Request) (*ContactUnblock_Reply, error)
	// ContactAliasKeySend send an alias key to a contact, the contact will be able to assert that your account is being present on a multi-member group
	ContactAliasKeySend(context.Context, *ContactAliasKeySend_Request) (*ContactAliasKeySend_Reply, error)
	// MultiMemberGroupCreate creates a new multi-member group
	MultiMemberGroupCreate(context.Context, *MultiMemberGroupCreate_Request) (*MultiMemberGroupCreate_Reply, error)
	// MultiMemberGroupJoin joins a multi-member group
	MultiMemberGroupJoin(context.Context, *MultiMemberGroupJoin_Request) (*MultiMemberGroupJoin_Reply, error)
	// MultiMemberGroupLeave leaves a multi-member group
	MultiMemberGroupLeave(context.Context, *MultiMemberGroupLeave_Request) (*MultiMemberGroupLeave_Reply, error)
	// MultiMemberGroupAliasResolverDisclose discloses your alias resolver key
	MultiMemberGroupAliasResolverDisclose(context.Context, *MultiMemberGroupAliasResolverDisclose_Request) (*MultiMemberGroupAliasResolverDisclose_Reply, error)
	// MultiMemberGroupAdminRoleGrant grants an admin role to a group member
	MultiMemberGroupAdminRoleGrant(context.Context, *MultiMemberGroupAdminRoleGrant_Request) (*MultiMemberGroupAdminRoleGrant_Reply, error)
	// MultiMemberGroupInvitationCreate creates an invitation to a multi-member group
	MultiMemberGroupInvitationCreate(context.Context, *MultiMemberGroupInvitationCreate_Request) (*MultiMemberGroupInvitationCreate_Reply, error)
	// AppMetadataSend adds an app event to the metadata store, the message is encrypted using a symmetric key and readable by future group members
	AppMetadataSend(context.Context, *AppMetadataSend_Request) (*AppMetadataSend_Reply, error)
	// AppMessageSend adds an app event to the message store, the message is encrypted using a derived key and readable by current group members
	AppMessageSend(context.Context, *AppMessageSend_Request) (*AppMessageSend_Reply, error)
	// GroupMetadataList replays previous and subscribes to new metadata events from the group
	GroupMetadataList(*GroupMetadataList_Request, grpc.ServerStreamingServer[GroupMetadataEvent]) error
	// GroupMessageList replays previous and subscribes to new message events from the group
	GroupMessageList(*GroupMessageList_Request, grpc.ServerStreamingServer[GroupMessageEvent]) error
	// GroupInfo retrieves information about a group
	GroupInfo(context.Context, *GroupInfo_Request) (*GroupInfo_Reply, error)
	// ActivateGroup explicitly opens a group
	ActivateGroup(context.Context, *ActivateGroup_Request) (*ActivateGroup_Reply, error)
	// DeactivateGroup closes a group
	DeactivateGroup(context.Context, *DeactivateGroup_Request) (*DeactivateGroup_Reply, error)
	// GroupDeviceStatus monitor device status
	GroupDeviceStatus(*GroupDeviceStatus_Request, grpc.ServerStreamingServer[GroupDeviceStatus_Reply]) error
	DebugListGroups(*DebugListGroups_Request, grpc.ServerStreamingServer[DebugListGroups_Reply]) error
	DebugInspectGroupStore(*DebugInspectGroupStore_Request, grpc.ServerStreamingServer[DebugInspectGroupStore_Reply]) error
	DebugGroup(context.Context, *DebugGroup_Request) (*DebugGroup_Reply, error)
	SystemInfo(context.Context, *SystemInfo_Request) (*SystemInfo_Reply, error)
	// CredentialVerificationServiceInitFlow Initialize a credential verification flow
	CredentialVerificationServiceInitFlow(context.Context, *CredentialVerificationServiceInitFlow_Request) (*CredentialVerificationServiceInitFlow_Reply, error)
	// CredentialVerificationServiceCompleteFlow Completes a credential verification flow
	CredentialVerificationServiceCompleteFlow(context.Context, *CredentialVerificationServiceCompleteFlow_Request) (*CredentialVerificationServiceCompleteFlow_Reply, error)
	// VerifiedCredentialsList Retrieves the list of verified credentials
	VerifiedCredentialsList(*VerifiedCredentialsList_Request, grpc.ServerStreamingServer[VerifiedCredentialsList_Reply]) error
	// ReplicationServiceRegisterGroup Asks a replication service to distribute a group contents
	ReplicationServiceRegisterGroup(context.Context, *ReplicationServiceRegisterGroup_Request) (*ReplicationServiceRegisterGroup_Reply, error)
	// PeerList returns a list of P2P peers
	PeerList(context.Context, *PeerList_Request) (*PeerList_Reply, error)
	// OutOfStoreReceive parses a payload received outside a synchronized store
	OutOfStoreReceive(context.Context, *OutOfStoreReceive_Request) (*OutOfStoreReceive_Reply, error)
	// OutOfStoreSeal creates a payload of a message present in store to be sent outside a synchronized store
	OutOfStoreSeal(context.Context, *OutOfStoreSeal_Request) (*OutOfStoreSeal_Reply, error)
	// RefreshContactRequest try to refresh the contact request for the given contact
	RefreshContactRequest(context.Context, *RefreshContactRequest_Request) (*RefreshContactRequest_Reply, error)
	mustEmbedUnimplementedProtocolServiceServer()
}

// UnimplementedProtocolServiceServer must be embedded to have
// forward compatible implementations.
//
// NOTE: this should be embedded by value instead of pointer to avoid a nil
// pointer dereference when methods are called.
type UnimplementedProtocolServiceServer struct{}

func (UnimplementedProtocolServiceServer) ServiceExportData(*ServiceExportData_Request, grpc.ServerStreamingServer[ServiceExportData_Reply]) error {
	return status.Errorf(codes.Unimplemented, "method ServiceExportData not implemented")
}
func (UnimplementedProtocolServiceServer) ServiceGetConfiguration(context.Context, *ServiceGetConfiguration_Request) (*ServiceGetConfiguration_Reply, error) {
	return nil, status.Errorf(codes.Unimplemented, "method ServiceGetConfiguration not implemented")
}
func (UnimplementedProtocolServiceServer) ContactRequestReference(context.Context, *ContactRequestReference_Request) (*ContactRequestReference_Reply, error) {
	return nil, status.Errorf(codes.Unimplemented, "method ContactRequestReference not implemented")
}
func (UnimplementedProtocolServiceServer) ContactRequestDisable(context.Context, *ContactRequestDisable_Request) (*ContactRequestDisable_Reply, error) {
	return nil, status.Errorf(codes.Unimplemented, "method ContactRequestDisable not implemented")
}
func (UnimplementedProtocolServiceServer) ContactRequestEnable(context.Context, *ContactRequestEnable_Request) (*ContactRequestEnable_Reply, error) {
	return nil, status.Errorf(codes.Unimplemented, "method ContactRequestEnable not implemented")
}
func (UnimplementedProtocolServiceServer) ContactRequestResetReference(context.Context, *ContactRequestResetReference_Request) (*ContactRequestResetReference_Reply, error) {
	return nil, status.Errorf(codes.Unimplemented, "method ContactRequestResetReference not implemented")
}
func (UnimplementedProtocolServiceServer) ContactRequestSend(context.Context, *ContactRequestSend_Request) (*ContactRequestSend_Reply, error) {
	return nil, status.Errorf(codes.Unimplemented, "method ContactRequestSend not implemented")
}
func (UnimplementedProtocolServiceServer) ContactRequestAccept(context.Context, *ContactRequestAccept_Request) (*ContactRequestAccept_Reply, error) {
	return nil, status.Errorf(codes.Unimplemented, "method ContactRequestAccept not implemented")
}
func (UnimplementedProtocolServiceServer) ContactRequestDiscard(context.Context, *ContactRequestDiscard_Request) (*ContactRequestDiscard_Reply, error) {
	return nil, status.Errorf(codes.Unimplemented, "method ContactRequestDiscard not implemented")
}
func (UnimplementedProtocolServiceServer) ShareContact(context.Context, *ShareContact_Request) (*ShareContact_Reply, error) {
	return nil, status.Errorf(codes.Unimplemented, "method ShareContact not implemented")
}
func (UnimplementedProtocolServiceServer) DecodeContact(context.Context, *DecodeContact_Request) (*DecodeContact_Reply, error) {
	return nil, status.Errorf(codes.Unimplemented, "method DecodeContact not implemented")
}
func (UnimplementedProtocolServiceServer) ContactBlock(context.Context, *ContactBlock_Request) (*ContactBlock_Reply, error) {
	return nil, status.Errorf(codes.Unimplemented, "method ContactBlock not implemented")
}
func (UnimplementedProtocolServiceServer) ContactUnblock(context.Context, *ContactUnblock_Request) (*ContactUnblock_Reply, error) {
	return nil, status.Errorf(codes.Unimplemented, "method ContactUnblock not implemented")
}
func (UnimplementedProtocolServiceServer) ContactAliasKeySend(context.Context, *ContactAliasKeySend_Request) (*ContactAliasKeySend_Reply, error) {
	return nil, status.Errorf(codes.Unimplemented, "method ContactAliasKeySend not implemented")
}
func (UnimplementedProtocolServiceServer) MultiMemberGroupCreate(context.Context, *MultiMemberGroupCreate_Request) (*MultiMemberGroupCreate_Reply, error) {
	return nil, status.Errorf(codes.Unimplemented, "method MultiMemberGroupCreate not implemented")
}
func (UnimplementedProtocolServiceServer) MultiMemberGroupJoin(context.Context, *MultiMemberGroupJoin_Request) (*MultiMemberGroupJoin_Reply, error) {
	return nil, status.Errorf(codes.Unimplemented, "method MultiMemberGroupJoin not implemented")
}
func (UnimplementedProtocolServiceServer) MultiMemberGroupLeave(context.Context, *MultiMemberGroupLeave_Request) (*MultiMemberGroupLeave_Reply, error) {
	return nil, status.Errorf(codes.Unimplemented, "method MultiMemberGroupLeave not implemented")
}
func (UnimplementedProtocolServiceServer) MultiMemberGroupAliasResolverDisclose(context.Context, *MultiMemberGroupAliasResolverDisclose_Request) (*MultiMemberGroupAliasResolverDisclose_Reply, error) {
	return nil, status.Errorf(codes.Unimplemented, "method MultiMemberGroupAliasResolverDisclose not implemented")
}
func (UnimplementedProtocolServiceServer) MultiMemberGroupAdminRoleGrant(context.Context, *MultiMemberGroupAdminRoleGrant_Request) (*MultiMemberGroupAdminRoleGrant_Reply, error) {
	return nil, status.Errorf(codes.Unimplemented, "method MultiMemberGroupAdminRoleGrant not implemented")
}
func (UnimplementedProtocolServiceServer) MultiMemberGroupInvitationCreate(context.Context, *MultiMemberGroupInvitationCreate_Request) (*MultiMemberGroupInvitationCreate_Reply, error) {
	return nil, status.Errorf(codes.Unimplemented, "method MultiMemberGroupInvitationCreate not implemented")
}
func (UnimplementedProtocolServiceServer) AppMetadataSend(context.Context, *AppMetadataSend_Request) (*AppMetadataSend_Reply, error) {
	return nil, status.Errorf(codes.Unimplemented, "method AppMetadataSend not implemented")
}
func (UnimplementedProtocolServiceServer) AppMessageSend(context.Context, *AppMessageSend_Request) (*AppMessageSend_Reply, error) {
	return nil, status.Errorf(codes.Unimplemented, "method AppMessageSend not implemented")
}
func (UnimplementedProtocolServiceServer) GroupMetadataList(*GroupMetadataList_Request, grpc.ServerStreamingServer[GroupMetadataEvent]) error {
	return status.Errorf(codes.Unimplemented, "method GroupMetadataList not implemented")
}
func (UnimplementedProtocolServiceServer) GroupMessageList(*GroupMessageList_Request, grpc.ServerStreamingServer[GroupMessageEvent]) error {
	return status.Errorf(codes.Unimplemented, "method GroupMessageList not implemented")
}
func (UnimplementedProtocolServiceServer) GroupInfo(context.Context, *GroupInfo_Request) (*GroupInfo_Reply, error) {
	return nil, status.Errorf(codes.Unimplemented, "method GroupInfo not implemented")
}
func (UnimplementedProtocolServiceServer) ActivateGroup(context.Context, *ActivateGroup_Request) (*ActivateGroup_Reply, error) {
	return nil, status.Errorf(codes.Unimplemented, "method ActivateGroup not implemented")
}
func (UnimplementedProtocolServiceServer) DeactivateGroup(context.Context, *DeactivateGroup_Request) (*DeactivateGroup_Reply, error) {
	return nil, status.Errorf(codes.Unimplemented, "method DeactivateGroup not implemented")
}
func (UnimplementedProtocolServiceServer) GroupDeviceStatus(*GroupDeviceStatus_Request, grpc.ServerStreamingServer[GroupDeviceStatus_Reply]) error {
	return status.Errorf(codes.Unimplemented, "method GroupDeviceStatus not implemented")
}
func (UnimplementedProtocolServiceServer) DebugListGroups(*DebugListGroups_Request, grpc.ServerStreamingServer[DebugListGroups_Reply]) error {
	return status.Errorf(codes.Unimplemented, "method DebugListGroups not implemented")
}
func (UnimplementedProtocolServiceServer) DebugInspectGroupStore(*DebugInspectGroupStore_Request, grpc.ServerStreamingServer[DebugInspectGroupStore_Reply]) error {
	return status.Errorf(codes.Unimplemented, "method DebugInspectGroupStore not implemented")
}
func (UnimplementedProtocolServiceServer) DebugGroup(context.Context, *DebugGroup_Request) (*DebugGroup_Reply, error) {
	return nil, status.Errorf(codes.Unimplemented, "method DebugGroup not implemented")
}
func (UnimplementedProtocolServiceServer) SystemInfo(context.Context, *SystemInfo_Request) (*SystemInfo_Reply, error) {
	return nil, status.Errorf(codes.Unimplemented, "method SystemInfo not implemented")
}
func (UnimplementedProtocolServiceServer) CredentialVerificationServiceInitFlow(context.Context, *CredentialVerificationServiceInitFlow_Request) (*CredentialVerificationServiceInitFlow_Reply, error) {
	return nil, status.Errorf(codes.Unimplemented, "method CredentialVerificationServiceInitFlow not implemented")
}
func (UnimplementedProtocolServiceServer) CredentialVerificationServiceCompleteFlow(context.Context, *CredentialVerificationServiceCompleteFlow_Request) (*CredentialVerificationServiceCompleteFlow_Reply, error) {
	return nil, status.Errorf(codes.Unimplemented, "method CredentialVerificationServiceCompleteFlow not implemented")
}
func (UnimplementedProtocolServiceServer) VerifiedCredentialsList(*VerifiedCredentialsList_Request, grpc.ServerStreamingServer[VerifiedCredentialsList_Reply]) error {
	return status.Errorf(codes.Unimplemented, "method VerifiedCredentialsList not implemented")
}
func (UnimplementedProtocolServiceServer) ReplicationServiceRegisterGroup(context.Context, *ReplicationServiceRegisterGroup_Request) (*ReplicationServiceRegisterGroup_Reply, error) {
	return nil, status.Errorf(codes.Unimplemented, "method ReplicationServiceRegisterGroup not implemented")
}
func (UnimplementedProtocolServiceServer) PeerList(context.Context, *PeerList_Request) (*PeerList_Reply, error) {
	return nil, status.Errorf(codes.Unimplemented, "method PeerList not implemented")
}
func (UnimplementedProtocolServiceServer) OutOfStoreReceive(context.Context, *OutOfStoreReceive_Request) (*OutOfStoreReceive_Reply, error) {
	return nil, status.Errorf(codes.Unimplemented, "method OutOfStoreReceive not implemented")
}
func (UnimplementedProtocolServiceServer) OutOfStoreSeal(context.Context, *OutOfStoreSeal_Request) (*OutOfStoreSeal_Reply, error) {
	return nil, status.Errorf(codes.Unimplemented, "method OutOfStoreSeal not implemented")
}
func (UnimplementedProtocolServiceServer) RefreshContactRequest(context.Context, *RefreshContactRequest_Request) (*RefreshContactRequest_Reply, error) {
	return nil, status.Errorf(codes.Unimplemented, "method RefreshContactRequest not implemented")
}
func (UnimplementedProtocolServiceServer) mustEmbedUnimplementedProtocolServiceServer() {}
func (UnimplementedProtocolServiceServer) testEmbeddedByValue()                         {}

// UnsafeProtocolServiceServer may be embedded to opt out of forward compatibility for this service.
// Use of this interface is not recommended, as added methods to ProtocolServiceServer will
// result in compilation errors.
type UnsafeProtocolServiceServer interface {
	mustEmbedUnimplementedProtocolServiceServer()
}

func RegisterProtocolServiceServer(s grpc.ServiceRegistrar, srv ProtocolServiceServer) {
	// If the following call pancis, it indicates UnimplementedProtocolServiceServer was
	// embedded by pointer and is nil.  This will cause panics if an
	// unimplemented method is ever invoked, so we test this at initialization
	// time to prevent it from happening at runtime later due to I/O.
	if t, ok := srv.(interface{ testEmbeddedByValue() }); ok {
		t.testEmbeddedByValue()
	}
	s.RegisterService(&ProtocolService_ServiceDesc, srv)
}

func _ProtocolService_ServiceExportData_Handler(srv interface{}, stream grpc.ServerStream) error {
	m := new(ServiceExportData_Request)
	if err := stream.RecvMsg(m); err != nil {
		return err
	}
	return srv.(ProtocolServiceServer).ServiceExportData(m, &grpc.GenericServerStream[ServiceExportData_Request, ServiceExportData_Reply]{ServerStream: stream})
}

// This type alias is provided for backwards compatibility with existing code that references the prior non-generic stream type by name.
type ProtocolService_ServiceExportDataServer = grpc.ServerStreamingServer[ServiceExportData_Reply]

func _ProtocolService_ServiceGetConfiguration_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(ServiceGetConfiguration_Request)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(ProtocolServiceServer).ServiceGetConfiguration(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: ProtocolService_ServiceGetConfiguration_FullMethodName,
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(ProtocolServiceServer).ServiceGetConfiguration(ctx, req.(*ServiceGetConfiguration_Request))
	}
	return interceptor(ctx, in, info, handler)
}

func _ProtocolService_ContactRequestReference_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(ContactRequestReference_Request)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(ProtocolServiceServer).ContactRequestReference(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: ProtocolService_ContactRequestReference_FullMethodName,
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(ProtocolServiceServer).ContactRequestReference(ctx, req.(*ContactRequestReference_Request))
	}
	return interceptor(ctx, in, info, handler)
}

func _ProtocolService_ContactRequestDisable_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(ContactRequestDisable_Request)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(ProtocolServiceServer).ContactRequestDisable(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: ProtocolService_ContactRequestDisable_FullMethodName,
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(ProtocolServiceServer).ContactRequestDisable(ctx, req.(*ContactRequestDisable_Request))
	}
	return interceptor(ctx, in, info, handler)
}

func _ProtocolService_ContactRequestEnable_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(ContactRequestEnable_Request)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(ProtocolServiceServer).ContactRequestEnable(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: ProtocolService_ContactRequestEnable_FullMethodName,
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(ProtocolServiceServer).ContactRequestEnable(ctx, req.(*ContactRequestEnable_Request))
	}
	return interceptor(ctx, in, info, handler)
}

func _ProtocolService_ContactRequestResetReference_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(ContactRequestResetReference_Request)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(ProtocolServiceServer).ContactRequestResetReference(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: ProtocolService_ContactRequestResetReference_FullMethodName,
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(ProtocolServiceServer).ContactRequestResetReference(ctx, req.(*ContactRequestResetReference_Request))
	}
	return interceptor(ctx, in, info, handler)
}

func _ProtocolService_ContactRequestSend_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(ContactRequestSend_Request)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(ProtocolServiceServer).ContactRequestSend(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: ProtocolService_ContactRequestSend_FullMethodName,
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(ProtocolServiceServer).ContactRequestSend(ctx, req.(*ContactRequestSend_Request))
	}
	return interceptor(ctx, in, info, handler)
}

func _ProtocolService_ContactRequestAccept_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(ContactRequestAccept_Request)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(ProtocolServiceServer).ContactRequestAccept(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: ProtocolService_ContactRequestAccept_FullMethodName,
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(ProtocolServiceServer).ContactRequestAccept(ctx, req.(*ContactRequestAccept_Request))
	}
	return interceptor(ctx, in, info, handler)
}

func _ProtocolService_ContactRequestDiscard_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(ContactRequestDiscard_Request)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(ProtocolServiceServer).ContactRequestDiscard(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: ProtocolService_ContactRequestDiscard_FullMethodName,
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(ProtocolServiceServer).ContactRequestDiscard(ctx, req.(*ContactRequestDiscard_Request))
	}
	return interceptor(ctx, in, info, handler)
}

func _ProtocolService_ShareContact_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(ShareContact_Request)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(ProtocolServiceServer).ShareContact(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: ProtocolService_ShareContact_FullMethodName,
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(ProtocolServiceServer).ShareContact(ctx, req.(*ShareContact_Request))
	}
	return interceptor(ctx, in, info, handler)
}

func _ProtocolService_DecodeContact_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(DecodeContact_Request)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(ProtocolServiceServer).DecodeContact(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: ProtocolService_DecodeContact_FullMethodName,
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(ProtocolServiceServer).DecodeContact(ctx, req.(*DecodeContact_Request))
	}
	return interceptor(ctx, in, info, handler)
}

func _ProtocolService_ContactBlock_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(ContactBlock_Request)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(ProtocolServiceServer).ContactBlock(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: ProtocolService_ContactBlock_FullMethodName,
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(ProtocolServiceServer).ContactBlock(ctx, req.(*ContactBlock_Request))
	}
	return interceptor(ctx, in, info, handler)
}

func _ProtocolService_ContactUnblock_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(ContactUnblock_Request)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(ProtocolServiceServer).ContactUnblock(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: ProtocolService_ContactUnblock_FullMethodName,
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(ProtocolServiceServer).ContactUnblock(ctx, req.(*ContactUnblock_Request))
	}
	return interceptor(ctx, in, info, handler)
}

func _ProtocolService_ContactAliasKeySend_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(ContactAliasKeySend_Request)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(ProtocolServiceServer).ContactAliasKeySend(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: ProtocolService_ContactAliasKeySend_FullMethodName,
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(ProtocolServiceServer).ContactAliasKeySend(ctx, req.(*ContactAliasKeySend_Request))
	}
	return interceptor(ctx, in, info, handler)
}

func _ProtocolService_MultiMemberGroupCreate_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(MultiMemberGroupCreate_Request)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(ProtocolServiceServer).MultiMemberGroupCreate(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: ProtocolService_MultiMemberGroupCreate_FullMethodName,
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(ProtocolServiceServer).MultiMemberGroupCreate(ctx, req.(*MultiMemberGroupCreate_Request))
	}
	return interceptor(ctx, in, info, handler)
}

func _ProtocolService_MultiMemberGroupJoin_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(MultiMemberGroupJoin_Request)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(ProtocolServiceServer).MultiMemberGroupJoin(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: ProtocolService_MultiMemberGroupJoin_FullMethodName,
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(ProtocolServiceServer).MultiMemberGroupJoin(ctx, req.(*MultiMemberGroupJoin_Request))
	}
	return interceptor(ctx, in, info, handler)
}

func _ProtocolService_MultiMemberGroupLeave_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(MultiMemberGroupLeave_Request)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(ProtocolServiceServer).MultiMemberGroupLeave(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: ProtocolService_MultiMemberGroupLeave_FullMethodName,
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(ProtocolServiceServer).MultiMemberGroupLeave(ctx, req.(*MultiMemberGroupLeave_Request))
	}
	return interceptor(ctx, in, info, handler)
}

func _ProtocolService_MultiMemberGroupAliasResolverDisclose_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(MultiMemberGroupAliasResolverDisclose_Request)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(ProtocolServiceServer).MultiMemberGroupAliasResolverDisclose(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: ProtocolService_MultiMemberGroupAliasResolverDisclose_FullMethodName,
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(ProtocolServiceServer).MultiMemberGroupAliasResolverDisclose(ctx, req.(*MultiMemberGroupAliasResolverDisclose_Request))
	}
	return interceptor(ctx, in, info, handler)
}

func _ProtocolService_MultiMemberGroupAdminRoleGrant_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(MultiMemberGroupAdminRoleGrant_Request)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(ProtocolServiceServer).MultiMemberGroupAdminRoleGrant(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: ProtocolService_MultiMemberGroupAdminRoleGrant_FullMethodName,
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(ProtocolServiceServer).MultiMemberGroupAdminRoleGrant(ctx, req.(*MultiMemberGroupAdminRoleGrant_Request))
	}
	return interceptor(ctx, in, info, handler)
}

func _ProtocolService_MultiMemberGroupInvitationCreate_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(MultiMemberGroupInvitationCreate_Request)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(ProtocolServiceServer).MultiMemberGroupInvitationCreate(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: ProtocolService_MultiMemberGroupInvitationCreate_FullMethodName,
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(ProtocolServiceServer).MultiMemberGroupInvitationCreate(ctx, req.(*MultiMemberGroupInvitationCreate_Request))
	}
	return interceptor(ctx, in, info, handler)
}

func _ProtocolService_AppMetadataSend_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(AppMetadataSend_Request)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(ProtocolServiceServer).AppMetadataSend(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: ProtocolService_AppMetadataSend_FullMethodName,
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(ProtocolServiceServer).AppMetadataSend(ctx, req.(*AppMetadataSend_Request))
	}
	return interceptor(ctx, in, info, handler)
}

func _ProtocolService_AppMessageSend_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(AppMessageSend_Request)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(ProtocolServiceServer).AppMessageSend(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: ProtocolService_AppMessageSend_FullMethodName,
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(ProtocolServiceServer).AppMessageSend(ctx, req.(*AppMessageSend_Request))
	}
	return interceptor(ctx, in, info, handler)
}

func _ProtocolService_GroupMetadataList_Handler(srv interface{}, stream grpc.ServerStream) error {
	m := new(GroupMetadataList_Request)
	if err := stream.RecvMsg(m); err != nil {
		return err
	}
	return srv.(ProtocolServiceServer).GroupMetadataList(m, &grpc.GenericServerStream[GroupMetadataList_Request, GroupMetadataEvent]{ServerStream: stream})
}

// This type alias is provided for backwards compatibility with existing code that references the prior non-generic stream type by name.
type ProtocolService_GroupMetadataListServer = grpc.ServerStreamingServer[GroupMetadataEvent]

func _ProtocolService_GroupMessageList_Handler(srv interface{}, stream grpc.ServerStream) error {
	m := new(GroupMessageList_Request)
	if err := stream.RecvMsg(m); err != nil {
		return err
	}
	return srv.(ProtocolServiceServer).GroupMessageList(m, &grpc.GenericServerStream[GroupMessageList_Request, GroupMessageEvent]{ServerStream: stream})
}

// This type alias is provided for backwards compatibility with existing code that references the prior non-generic stream type by name.
type ProtocolService_GroupMessageListServer = grpc.ServerStreamingServer[GroupMessageEvent]

func _ProtocolService_GroupInfo_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(GroupInfo_Request)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(ProtocolServiceServer).GroupInfo(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: ProtocolService_GroupInfo_FullMethodName,
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(ProtocolServiceServer).GroupInfo(ctx, req.(*GroupInfo_Request))
	}
	return interceptor(ctx, in, info, handler)
}

func _ProtocolService_ActivateGroup_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(ActivateGroup_Request)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(ProtocolServiceServer).ActivateGroup(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: ProtocolService_ActivateGroup_FullMethodName,
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(ProtocolServiceServer).ActivateGroup(ctx, req.(*ActivateGroup_Request))
	}
	return interceptor(ctx, in, info, handler)
}

func _ProtocolService_DeactivateGroup_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(DeactivateGroup_Request)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(ProtocolServiceServer).DeactivateGroup(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: ProtocolService_DeactivateGroup_FullMethodName,
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(ProtocolServiceServer).DeactivateGroup(ctx, req.(*DeactivateGroup_Request))
	}
	return interceptor(ctx, in, info, handler)
}

func _ProtocolService_GroupDeviceStatus_Handler(srv interface{}, stream grpc.ServerStream) error {
	m := new(GroupDeviceStatus_Request)
	if err := stream.RecvMsg(m); err != nil {
		return err
	}
	return srv.(ProtocolServiceServer).GroupDeviceStatus(m, &grpc.GenericServerStream[GroupDeviceStatus_Request, GroupDeviceStatus_Reply]{ServerStream: stream})
}

// This type alias is provided for backwards compatibility with existing code that references the prior non-generic stream type by name.
type ProtocolService_GroupDeviceStatusServer = grpc.ServerStreamingServer[GroupDeviceStatus_Reply]

func _ProtocolService_DebugListGroups_Handler(srv interface{}, stream grpc.ServerStream) error {
	m := new(DebugListGroups_Request)
	if err := stream.RecvMsg(m); err != nil {
		return err
	}
	return srv.(ProtocolServiceServer).DebugListGroups(m, &grpc.GenericServerStream[DebugListGroups_Request, DebugListGroups_Reply]{ServerStream: stream})
}

// This type alias is provided for backwards compatibility with existing code that references the prior non-generic stream type by name.
type ProtocolService_DebugListGroupsServer = grpc.ServerStreamingServer[DebugListGroups_Reply]

func _ProtocolService_DebugInspectGroupStore_Handler(srv interface{}, stream grpc.ServerStream) error {
	m := new(DebugInspectGroupStore_Request)
	if err := stream.RecvMsg(m); err != nil {
		return err
	}
	return srv.(ProtocolServiceServer).DebugInspectGroupStore(m, &grpc.GenericServerStream[DebugInspectGroupStore_Request, DebugInspectGroupStore_Reply]{ServerStream: stream})
}

// This type alias is provided for backwards compatibility with existing code that references the prior non-generic stream type by name.
type ProtocolService_DebugInspectGroupStoreServer = grpc.ServerStreamingServer[DebugInspectGroupStore_Reply]

func _ProtocolService_DebugGroup_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(DebugGroup_Request)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(ProtocolServiceServer).DebugGroup(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: ProtocolService_DebugGroup_FullMethodName,
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(ProtocolServiceServer).DebugGroup(ctx, req.(*DebugGroup_Request))
	}
	return interceptor(ctx, in, info, handler)
}

func _ProtocolService_SystemInfo_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(SystemInfo_Request)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(ProtocolServiceServer).SystemInfo(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: ProtocolService_SystemInfo_FullMethodName,
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(ProtocolServiceServer).SystemInfo(ctx, req.(*SystemInfo_Request))
	}
	return interceptor(ctx, in, info, handler)
}

func _ProtocolService_CredentialVerificationServiceInitFlow_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(CredentialVerificationServiceInitFlow_Request)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(ProtocolServiceServer).CredentialVerificationServiceInitFlow(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: ProtocolService_CredentialVerificationServiceInitFlow_FullMethodName,
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(ProtocolServiceServer).CredentialVerificationServiceInitFlow(ctx, req.(*CredentialVerificationServiceInitFlow_Request))
	}
	return interceptor(ctx, in, info, handler)
}

func _ProtocolService_CredentialVerificationServiceCompleteFlow_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(CredentialVerificationServiceCompleteFlow_Request)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(ProtocolServiceServer).CredentialVerificationServiceCompleteFlow(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: ProtocolService_CredentialVerificationServiceCompleteFlow_FullMethodName,
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(ProtocolServiceServer).CredentialVerificationServiceCompleteFlow(ctx, req.(*CredentialVerificationServiceCompleteFlow_Request))
	}
	return interceptor(ctx, in, info, handler)
}

func _ProtocolService_VerifiedCredentialsList_Handler(srv interface{}, stream grpc.ServerStream) error {
	m := new(VerifiedCredentialsList_Request)
	if err := stream.RecvMsg(m); err != nil {
		return err
	}
	return srv.(ProtocolServiceServer).VerifiedCredentialsList(m, &grpc.GenericServerStream[VerifiedCredentialsList_Request, VerifiedCredentialsList_Reply]{ServerStream: stream})
}

// This type alias is provided for backwards compatibility with existing code that references the prior non-generic stream type by name.
type ProtocolService_VerifiedCredentialsListServer = grpc.ServerStreamingServer[VerifiedCredentialsList_Reply]

func _ProtocolService_ReplicationServiceRegisterGroup_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(ReplicationServiceRegisterGroup_Request)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(ProtocolServiceServer).ReplicationServiceRegisterGroup(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: ProtocolService_ReplicationServiceRegisterGroup_FullMethodName,
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(ProtocolServiceServer).ReplicationServiceRegisterGroup(ctx, req.(*ReplicationServiceRegisterGroup_Request))
	}
	return interceptor(ctx, in, info, handler)
}

func _ProtocolService_PeerList_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(PeerList_Request)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(ProtocolServiceServer).PeerList(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: ProtocolService_PeerList_FullMethodName,
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(ProtocolServiceServer).PeerList(ctx, req.(*PeerList_Request))
	}
	return interceptor(ctx, in, info, handler)
}

func _ProtocolService_OutOfStoreReceive_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(OutOfStoreReceive_Request)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(ProtocolServiceServer).OutOfStoreReceive(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: ProtocolService_OutOfStoreReceive_FullMethodName,
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(ProtocolServiceServer).OutOfStoreReceive(ctx, req.(*OutOfStoreReceive_Request))
	}
	return interceptor(ctx, in, info, handler)
}

func _ProtocolService_OutOfStoreSeal_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(OutOfStoreSeal_Request)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(ProtocolServiceServer).OutOfStoreSeal(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: ProtocolService_OutOfStoreSeal_FullMethodName,
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(ProtocolServiceServer).OutOfStoreSeal(ctx, req.(*OutOfStoreSeal_Request))
	}
	return interceptor(ctx, in, info, handler)
}

func _ProtocolService_RefreshContactRequest_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(RefreshContactRequest_Request)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(ProtocolServiceServer).RefreshContactRequest(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: ProtocolService_RefreshContactRequest_FullMethodName,
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(ProtocolServiceServer).RefreshContactRequest(ctx, req.(*RefreshContactRequest_Request))
	}
	return interceptor(ctx, in, info, handler)
}

// ProtocolService_ServiceDesc is the grpc.ServiceDesc for ProtocolService service.
// It's only intended for direct use with grpc.RegisterService,
// and not to be introspected or modified (even as a copy)
var ProtocolService_ServiceDesc = grpc.ServiceDesc{
	ServiceName: "weshnet.protocol.v1.ProtocolService",
	HandlerType: (*ProtocolServiceServer)(nil),
	Methods: []grpc.MethodDesc{
		{
			MethodName: "ServiceGetConfiguration",
			Handler:    _ProtocolService_ServiceGetConfiguration_Handler,
		},
		{
			MethodName: "ContactRequestReference",
			Handler:    _ProtocolService_ContactRequestReference_Handler,
		},
		{
			MethodName: "ContactRequestDisable",
			Handler:    _ProtocolService_ContactRequestDisable_Handler,
		},
		{
			MethodName: "ContactRequestEnable",
			Handler:    _ProtocolService_ContactRequestEnable_Handler,
		},
		{
			MethodName: "ContactRequestResetReference",
			Handler:    _ProtocolService_ContactRequestResetReference_Handler,
		},
		{
			MethodName: "ContactRequestSend",
			Handler:    _ProtocolService_ContactRequestSend_Handler,
		},
		{
			MethodName: "ContactRequestAccept",
			Handler:    _ProtocolService_ContactRequestAccept_Handler,
		},
		{
			MethodName: "ContactRequestDiscard",
			Handler:    _ProtocolService_ContactRequestDiscard_Handler,
		},
		{
			MethodName: "ShareContact",
			Handler:    _ProtocolService_ShareContact_Handler,
		},
		{
			MethodName: "DecodeContact",
			Handler:    _ProtocolService_DecodeContact_Handler,
		},
		{
			MethodName: "ContactBlock",
			Handler:    _ProtocolService_ContactBlock_Handler,
		},
		{
			MethodName: "ContactUnblock",
			Handler:    _ProtocolService_ContactUnblock_Handler,
		},
		{
			MethodName: "ContactAliasKeySend",
			Handler:    _ProtocolService_ContactAliasKeySend_Handler,
		},
		{
			MethodName: "MultiMemberGroupCreate",
			Handler:    _ProtocolService_MultiMemberGroupCreate_Handler,
		},
		{
			MethodName: "MultiMemberGroupJoin",
			Handler:    _ProtocolService_MultiMemberGroupJoin_Handler,
		},
		{
			MethodName: "MultiMemberGroupLeave",
			Handler:    _ProtocolService_MultiMemberGroupLeave_Handler,
		},
		{
			MethodName: "MultiMemberGroupAliasResolverDisclose",
			Handler:    _ProtocolService_MultiMemberGroupAliasResolverDisclose_Handler,
		},
		{
			MethodName: "MultiMemberGroupAdminRoleGrant",
			Handler:    _ProtocolService_MultiMemberGroupAdminRoleGrant_Handler,
		},
		{
			MethodName: "MultiMemberGroupInvitationCreate",
			Handler:    _ProtocolService_MultiMemberGroupInvitationCreate_Handler,
		},
		{
			MethodName: "AppMetadataSend",
			Handler:    _ProtocolService_AppMetadataSend_Handler,
		},
		{
			MethodName: "AppMessageSend",
			Handler:    _ProtocolService_AppMessageSend_Handler,
		},
		{
			MethodName: "GroupInfo",
			Handler:    _ProtocolService_GroupInfo_Handler,
		},
		{
			MethodName: "ActivateGroup",
			Handler:    _ProtocolService_ActivateGroup_Handler,
		},
		{
			MethodName: "DeactivateGroup",
			Handler:    _ProtocolService_DeactivateGroup_Handler,
		},
		{
			MethodName: "DebugGroup",
			Handler:    _ProtocolService_DebugGroup_Handler,
		},
		{
			MethodName: "SystemInfo",
			Handler:    _ProtocolService_SystemInfo_Handler,
		},
		{
			MethodName: "CredentialVerificationServiceInitFlow",
			Handler:    _ProtocolService_CredentialVerificationServiceInitFlow_Handler,
		},
		{
			MethodName: "CredentialVerificationServiceCompleteFlow",
			Handler:    _ProtocolService_CredentialVerificationServiceCompleteFlow_Handler,
		},
		{
			MethodName: "ReplicationServiceRegisterGroup",
			Handler:    _ProtocolService_ReplicationServiceRegisterGroup_Handler,
		},
		{
			MethodName: "PeerList",
			Handler:    _ProtocolService_PeerList_Handler,
		},
		{
			MethodName: "OutOfStoreReceive",
			Handler:    _ProtocolService_OutOfStoreReceive_Handler,
		},
		{
			MethodName: "OutOfStoreSeal",
			Handler:    _ProtocolService_OutOfStoreSeal_Handler,
		},
		{
			MethodName: "RefreshContactRequest",
			Handler:    _ProtocolService_RefreshContactRequest_Handler,
		},
	},
	Streams: []grpc.StreamDesc{
		{
			StreamName:    "ServiceExportData",
			Handler:       _ProtocolService_ServiceExportData_Handler,
			ServerStreams: true,
		},
		{
			StreamName:    "GroupMetadataList",
			Handler:       _ProtocolService_GroupMetadataList_Handler,
			ServerStreams: true,
		},
		{
			StreamName:    "GroupMessageList",
			Handler:       _ProtocolService_GroupMessageList_Handler,
			ServerStreams: true,
		},
		{
			StreamName:    "GroupDeviceStatus",
			Handler:       _ProtocolService_GroupDeviceStatus_Handler,
			ServerStreams: true,
		},
		{
			StreamName:    "DebugListGroups",
			Handler:       _ProtocolService_DebugListGroups_Handler,
			ServerStreams: true,
		},
		{
			StreamName:    "DebugInspectGroupStore",
			Handler:       _ProtocolService_DebugInspectGroupStore_Handler,
			ServerStreams: true,
		},
		{
			StreamName:    "VerifiedCredentialsList",
			Handler:       _ProtocolService_VerifiedCredentialsList_Handler,
			ServerStreams: true,
		},
	},
	Metadata: "protocoltypes.proto",
}
