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

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

package runtime

// APIVersionInternal may be used if you are registering a type that should not
// be considered stable or serialized - it is a convention only and has no
// special behavior in this package.
#APIVersionInternal: "__internal"

// GroupVersioner refines a set of possible conversion targets into a single option.
#GroupVersioner: _

// Identifier represents an identifier.
// Identitier of two different objects should be equal if and only if for every
// input the output they produce is exactly the same.
#Identifier: string // #enumIdentifier

#enumIdentifier:
	_#noopEncoderIdentifier

// Encoder writes objects to a serialized form
#Encoder: _

// Decoder attempts to load an object from data.
#Decoder: _

// Serializer is the core interface for transforming objects into a serialized format and back.
// Implementations may choose to perform conversion of the object, but no assumptions should be made.
#Serializer: _

// Codec is a Serializer that deals with the details of versioning objects. It offers the same
// interface as Serializer, so this is a marker to consumers that care about the version of the objects
// they receive.
#Codec: #Serializer

// ParameterCodec defines methods for serializing and deserializing API objects to url.Values and
// performing any necessary conversion. Unlike the normal Codec, query parameters are not self describing
// and the desired version must be specified.
#ParameterCodec: _

// Framer is a factory for creating readers and writers that obey a particular framing pattern.
#Framer: _

// SerializerInfo contains information about a specific serialization format
#SerializerInfo: {
	// MediaType is the value that represents this serializer over the wire.
	MediaType: string

	// MediaTypeType is the first part of the MediaType ("application" in "application/json").
	MediaTypeType: string

	// MediaTypeSubType is the second part of the MediaType ("json" in "application/json").
	MediaTypeSubType: string

	// EncodesAsText indicates this serializer can be encoded to UTF-8 safely.
	EncodesAsText: bool

	// Serializer is the individual object serializer for this media type.
	Serializer: #Serializer

	// PrettySerializer, if set, can serialize this object in a form biased towards
	// readability.
	PrettySerializer: #Serializer

	// StreamSerializer, if set, describes the streaming serialization format
	// for this media type.
	StreamSerializer?: null | #StreamSerializerInfo @go(,*StreamSerializerInfo)
}

// StreamSerializerInfo contains information about a specific stream serialization format
#StreamSerializerInfo: {
	// EncodesAsText indicates this serializer can be encoded to UTF-8 safely.
	EncodesAsText: bool

	// Serializer is the top level object serializer for this type when streaming
	Serializer: #Serializer

	// Framer is the factory for retrieving streams that separate objects on the wire
	Framer: #Framer
}

// NegotiatedSerializer is an interface used for obtaining encoders, decoders, and serializers
// for multiple supported media types. This would commonly be accepted by a server component
// that performs HTTP content negotiation to accept multiple formats.
#NegotiatedSerializer: _

// ClientNegotiator handles turning an HTTP content type into the appropriate encoder.
// Use NewClientNegotiator or NewVersionedClientNegotiator to create this interface from
// a NegotiatedSerializer.
#ClientNegotiator: _

// StorageSerializer is an interface used for obtaining encoders, decoders, and serializers
// that can read and write data at rest. This would commonly be used by client tools that must
// read files, or server side storage interfaces that persist restful objects.
#StorageSerializer: _

// NestedObjectEncoder is an optional interface that objects may implement to be given
// an opportunity to encode any nested Objects / RawExtensions during serialization.
#NestedObjectEncoder: _

// NestedObjectDecoder is an optional interface that objects may implement to be given
// an opportunity to decode any nested Objects / RawExtensions during serialization.
#NestedObjectDecoder: _

#ObjectDefaulter: _

#ObjectVersioner: _

// ObjectConvertor converts an object to a different version.
#ObjectConvertor: _

// ObjectTyper contains methods for extracting the APIVersion and Kind
// of objects.
#ObjectTyper: _

// ObjectCreater contains methods for instantiating an object by kind and version.
#ObjectCreater: _

// EquivalentResourceMapper provides information about resources that address the same underlying data as a specified resource
#EquivalentResourceMapper: _

// EquivalentResourceRegistry provides an EquivalentResourceMapper interface,
// and allows registering known resource[/subresource] -> kind
#EquivalentResourceRegistry: _

// ResourceVersioner provides methods for setting and retrieving
// the resource version from an API object.
#ResourceVersioner: _

// SelfLinker provides methods for setting and retrieving the SelfLink field of an API object.
#SelfLinker: _

// Object interface must be supported by all API types registered with Scheme. Since objects in a scheme are
// expected to be serialized to the wire, the interface an Object must provide to the Scheme allows
// serializers to set the kind, version, and group the object is represented as. An Object may choose
// to return a no-op ObjectKindAccessor in cases where it is not expected to be serialized.
#Object: _

// CacheableObject allows an object to cache its different serializations
// to avoid performing the same serialization multiple times.
#CacheableObject: _

// Unstructured objects store values as map[string]interface{}, with only values that can be serialized
// to JSON allowed.
#Unstructured: _
