// Code generated by cue get go. DO NOT EDIT.

//cue:generate cue get go k8s.io/apimachinery/pkg/watch

package watch

import (
	"k8s.io/apimachinery/pkg/runtime"
)

// Interface can be implemented by anything that knows how to watch and report changes.
Interface :: _

// EventType defines the possible types of events.
EventType :: string // enumEventType

enumEventType ::
	Added |
	Modified |
	Deleted |
	Bookmark |
	Error

Added ::           EventType & "ADDED"
Modified ::        EventType & "MODIFIED"
Deleted ::         EventType & "DELETED"
Bookmark ::        EventType & "BOOKMARK"
Error ::           EventType & "ERROR"
DefaultChanSize :: int32 & 100

// Event represents a single event to a watched resource.
// +k8s:deepcopy-gen=true
Event :: {
	Type: EventType

	// Object is:
	//  * If Type is Added or Modified: the new state of the object.
	//  * If Type is Deleted: the state of the object immediately before deletion.
	//  * If Type is Bookmark: the object (instance of a type being watched) where
	//    only ResourceVersion field is set. On successful restart of watch from a
	//    bookmark resourceVersion, client is guaranteed to not get repeat event
	//    nor miss any events.
	//  * If Type is Error: *api.Status is recommended; other types may make sense
	//    depending on context.
	Object: runtime.Object
}

// FakeWatcher lets you test anything that consumes a watch.Interface; threadsafe.
FakeWatcher :: {
	Stopped: bool
}

// RaceFreeFakeWatcher lets you test anything that consumes a watch.Interface; threadsafe.
RaceFreeFakeWatcher :: {
	Stopped: bool
}
