// Copyright 2015 The Vanadium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.

package browspr

import (
	"v.io/x/ref/services/identity"
	"v.io/x/ref/services/wspr/internal/account"
)

type StartMessage struct {
	Identityd             string
	IdentitydBlessingRoot identity.BlessingRootResponse
	Proxy                 string
	NamespaceRoot         string
	LogLevel              int32
	LogModule             string
}

type AssociateAccountMessage struct {
	Account string
	Origin  string
	Caveats []account.Caveat
}

type CreateAccountMessage struct {
	Token string
}

type CleanupMessage struct {
	InstanceId int32
}

type OriginHasAccountMessage struct {
	Origin string
}

type GetAccountsMessage struct{}

type CreateInstanceMessage struct {
	InstanceId     int32
	Origin         string
	NamespaceRoots []string
	Proxy          string
}
