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