// 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 :: _
