// 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 blobtestsvdl

import (
	wire "v.io/v23/services/syncbase"
)

type BlobInfo struct {
	Info string
	Br   wire.BlobRef
}

type BlobUnion union {
	Num int32
	Bi  BlobInfo
}

type BlobSet struct {
	Info string
	Bs   set[wire.BlobRef]
}

type BlobAny struct {
	Info string
	Baa  []any
}

type NonBlobSet struct {
	Info string
	S    set[string]
}

type BlobOpt struct {
	Info string
	Bo   ?BlobInfo
}
