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

//cue:generate cue get go k8s.io/apimachinery/pkg/apis/meta/v1

package v1

// GroupResource specifies a Group and a Resource, but does not force a version.  This is useful for identifying
// concepts during lookup stages without having partially valid types
//
// +protobuf.options.(gogoproto.goproto_stringer)=false
#GroupResource: {
	group:    string @go(Group) @protobuf(1,bytes,opt)
	resource: string @go(Resource) @protobuf(2,bytes,opt)
}

// GroupVersionResource unambiguously identifies a resource.  It doesn't anonymously include GroupVersion
// to avoid automatic coersion.  It doesn't use a GroupVersion to avoid custom marshalling
//
// +protobuf.options.(gogoproto.goproto_stringer)=false
#GroupVersionResource: {
	group:    string @go(Group) @protobuf(1,bytes,opt)
	version:  string @go(Version) @protobuf(2,bytes,opt)
	resource: string @go(Resource) @protobuf(3,bytes,opt)
}

// GroupKind specifies a Group and a Kind, but does not force a version.  This is useful for identifying
// concepts during lookup stages without having partially valid types
//
// +protobuf.options.(gogoproto.goproto_stringer)=false
#GroupKind: {
	group: string @go(Group) @protobuf(1,bytes,opt)
	kind:  string @go(Kind) @protobuf(2,bytes,opt)
}

// GroupVersionKind unambiguously identifies a kind.  It doesn't anonymously include GroupVersion
// to avoid automatic coersion.  It doesn't use a GroupVersion to avoid custom marshalling
//
// +protobuf.options.(gogoproto.goproto_stringer)=false
#GroupVersionKind: {
	group:   string @go(Group) @protobuf(1,bytes,opt)
	version: string @go(Version) @protobuf(2,bytes,opt)
	kind:    string @go(Kind) @protobuf(3,bytes,opt)
}

// GroupVersion contains the "group" and the "version", which uniquely identifies the API.
//
// +protobuf.options.(gogoproto.goproto_stringer)=false
#GroupVersion: _
