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

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