// Code generated by protoc-gen-go-grpc. DO NOT EDIT.
// versions:
// - protoc-gen-go-grpc v1.3.0
// - protoc             (unknown)
// source: registry/v1alpha1/scim_token.proto

package registryv1alpha1

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.32.0 or later.
const _ = grpc.SupportPackageIsVersion7

const (
	SCIMTokenService_CreateSCIMToken_FullMethodName = "/bufman.dubbo.apache.org.registry.v1alpha1.SCIMTokenService/CreateSCIMToken"
	SCIMTokenService_ListSCIMTokens_FullMethodName  = "/bufman.dubbo.apache.org.registry.v1alpha1.SCIMTokenService/ListSCIMTokens"
	SCIMTokenService_DeleteSCIMToken_FullMethodName = "/bufman.dubbo.apache.org.registry.v1alpha1.SCIMTokenService/DeleteSCIMToken"
)

// SCIMTokenServiceClient is the client API for SCIMTokenService 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.
type SCIMTokenServiceClient interface {
	// CreateToken creates a new token suitable for authentication to the SCIM API.
	//
	// This method requires authentication.
	CreateSCIMToken(ctx context.Context, in *CreateSCIMTokenRequest, opts ...grpc.CallOption) (*CreateSCIMTokenResponse, error)
	// ListTokens lists all active SCIM tokens.
	//
	// This method requires authentication.
	ListSCIMTokens(ctx context.Context, in *ListSCIMTokensRequest, opts ...grpc.CallOption) (*ListSCIMTokensResponse, error)
	// DeleteToken deletes an existing token.
	//
	// This method requires authentication.
	DeleteSCIMToken(ctx context.Context, in *DeleteSCIMTokenRequest, opts ...grpc.CallOption) (*DeleteSCIMTokenResponse, error)
}

type sCIMTokenServiceClient struct {
	cc grpc.ClientConnInterface
}

func NewSCIMTokenServiceClient(cc grpc.ClientConnInterface) SCIMTokenServiceClient {
	return &sCIMTokenServiceClient{cc}
}

func (c *sCIMTokenServiceClient) CreateSCIMToken(ctx context.Context, in *CreateSCIMTokenRequest, opts ...grpc.CallOption) (*CreateSCIMTokenResponse, error) {
	out := new(CreateSCIMTokenResponse)
	err := c.cc.Invoke(ctx, SCIMTokenService_CreateSCIMToken_FullMethodName, in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *sCIMTokenServiceClient) ListSCIMTokens(ctx context.Context, in *ListSCIMTokensRequest, opts ...grpc.CallOption) (*ListSCIMTokensResponse, error) {
	out := new(ListSCIMTokensResponse)
	err := c.cc.Invoke(ctx, SCIMTokenService_ListSCIMTokens_FullMethodName, in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *sCIMTokenServiceClient) DeleteSCIMToken(ctx context.Context, in *DeleteSCIMTokenRequest, opts ...grpc.CallOption) (*DeleteSCIMTokenResponse, error) {
	out := new(DeleteSCIMTokenResponse)
	err := c.cc.Invoke(ctx, SCIMTokenService_DeleteSCIMToken_FullMethodName, in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

// SCIMTokenServiceServer is the server API for SCIMTokenService service.
// All implementations must embed UnimplementedSCIMTokenServiceServer
// for forward compatibility
type SCIMTokenServiceServer interface {
	// CreateToken creates a new token suitable for authentication to the SCIM API.
	//
	// This method requires authentication.
	CreateSCIMToken(context.Context, *CreateSCIMTokenRequest) (*CreateSCIMTokenResponse, error)
	// ListTokens lists all active SCIM tokens.
	//
	// This method requires authentication.
	ListSCIMTokens(context.Context, *ListSCIMTokensRequest) (*ListSCIMTokensResponse, error)
	// DeleteToken deletes an existing token.
	//
	// This method requires authentication.
	DeleteSCIMToken(context.Context, *DeleteSCIMTokenRequest) (*DeleteSCIMTokenResponse, error)
	mustEmbedUnimplementedSCIMTokenServiceServer()
}

// UnimplementedSCIMTokenServiceServer must be embedded to have forward compatible implementations.
type UnimplementedSCIMTokenServiceServer struct {
}

func (UnimplementedSCIMTokenServiceServer) CreateSCIMToken(context.Context, *CreateSCIMTokenRequest) (*CreateSCIMTokenResponse, error) {
	return nil, status.Errorf(codes.Unimplemented, "method CreateSCIMToken not implemented")
}
func (UnimplementedSCIMTokenServiceServer) ListSCIMTokens(context.Context, *ListSCIMTokensRequest) (*ListSCIMTokensResponse, error) {
	return nil, status.Errorf(codes.Unimplemented, "method ListSCIMTokens not implemented")
}
func (UnimplementedSCIMTokenServiceServer) DeleteSCIMToken(context.Context, *DeleteSCIMTokenRequest) (*DeleteSCIMTokenResponse, error) {
	return nil, status.Errorf(codes.Unimplemented, "method DeleteSCIMToken not implemented")
}
func (UnimplementedSCIMTokenServiceServer) mustEmbedUnimplementedSCIMTokenServiceServer() {}

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

func RegisterSCIMTokenServiceServer(s grpc.ServiceRegistrar, srv SCIMTokenServiceServer) {
	s.RegisterService(&SCIMTokenService_ServiceDesc, srv)
}

func _SCIMTokenService_CreateSCIMToken_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(CreateSCIMTokenRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(SCIMTokenServiceServer).CreateSCIMToken(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: SCIMTokenService_CreateSCIMToken_FullMethodName,
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(SCIMTokenServiceServer).CreateSCIMToken(ctx, req.(*CreateSCIMTokenRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _SCIMTokenService_ListSCIMTokens_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(ListSCIMTokensRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(SCIMTokenServiceServer).ListSCIMTokens(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: SCIMTokenService_ListSCIMTokens_FullMethodName,
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(SCIMTokenServiceServer).ListSCIMTokens(ctx, req.(*ListSCIMTokensRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _SCIMTokenService_DeleteSCIMToken_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(DeleteSCIMTokenRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(SCIMTokenServiceServer).DeleteSCIMToken(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: SCIMTokenService_DeleteSCIMToken_FullMethodName,
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(SCIMTokenServiceServer).DeleteSCIMToken(ctx, req.(*DeleteSCIMTokenRequest))
	}
	return interceptor(ctx, in, info, handler)
}

// SCIMTokenService_ServiceDesc is the grpc.ServiceDesc for SCIMTokenService service.
// It's only intended for direct use with grpc.RegisterService,
// and not to be introspected or modified (even as a copy)
var SCIMTokenService_ServiceDesc = grpc.ServiceDesc{
	ServiceName: "bufman.dubbo.apache.org.registry.v1alpha1.SCIMTokenService",
	HandlerType: (*SCIMTokenServiceServer)(nil),
	Methods: []grpc.MethodDesc{
		{
			MethodName: "CreateSCIMToken",
			Handler:    _SCIMTokenService_CreateSCIMToken_Handler,
		},
		{
			MethodName: "ListSCIMTokens",
			Handler:    _SCIMTokenService_ListSCIMTokens_Handler,
		},
		{
			MethodName: "DeleteSCIMToken",
			Handler:    _SCIMTokenService_DeleteSCIMToken_Handler,
		},
	},
	Streams:  []grpc.StreamDesc{},
	Metadata: "registry/v1alpha1/scim_token.proto",
}
