func New(client pb.GrpcGatewayClient) *Client {
	return &Client{
		gateway:       client,
		subscriptions: make(map[string]subscription),
	}
}
NewClient constructs a new client client. For every call there is expected jwt token for grpc stored in context.
package client
import (
	"context"
	"crypto/tls"
	"crypto/x509"
	"fmt"
	"sync"
	"time"
	"google.golang.org/grpc"
	"google.golang.org/grpc/credentials"
	"google.golang.org/grpc/keepalive"
	"github.com/plgd-dev/hub/grpc-gateway/pb"
	kitNetGrpc "github.com/plgd-dev/hub/pkg/net/grpc"
	"github.com/plgd-dev/hub/resource-aggregate/commands"
	"github.com/plgd-dev/hub/resource-aggregate/events"
)
type ApplicationCallback interface {
	GetRootCertificateAuthorities() ([]*x509.Certificate, error)
}
type OnboardOption = func() interface{}
type subscription = interface {
	Cancel() (wait func(), err error)
}
type Config struct {
	GatewayAddress string
}