// Code generated - EDITING IS FUTILE. DO NOT EDIT.

package v1_0

import (
	time "time"
)

// +k8s:openapi-gen=true
type CustomKindInnerObject1 struct {
	InnerField1 string                   `json:"innerField1"`
	InnerField2 []string                 `json:"innerField2"`
	InnerField3 []CustomKindInnerObject2 `json:"innerField3"`
	InnerField4 []map[string]interface{} `json:"innerField4"`
}

// NewCustomKindInnerObject1 creates a new CustomKindInnerObject1 object.
func NewCustomKindInnerObject1() *CustomKindInnerObject1 {
	return &CustomKindInnerObject1{
		InnerField2: []string{},
		InnerField3: []CustomKindInnerObject2{},
		InnerField4: []map[string]interface{}{},
	}
}

// OpenAPIModelName returns the OpenAPI model name for CustomKindInnerObject1.
func (CustomKindInnerObject1) OpenAPIModelName() string {
	return "codegen-tests.pkg.generated.customapp.v1_0.CustomKindInnerObject1"
}

// +k8s:openapi-gen=true
type CustomKindInnerObject2 struct {
	Name    string                 `json:"name"`
	Details map[string]interface{} `json:"details"`
}

// NewCustomKindInnerObject2 creates a new CustomKindInnerObject2 object.
func NewCustomKindInnerObject2() *CustomKindInnerObject2 {
	return &CustomKindInnerObject2{
		Details: map[string]interface{}{},
	}
}

// OpenAPIModelName returns the OpenAPI model name for CustomKindInnerObject2.
func (CustomKindInnerObject2) OpenAPIModelName() string {
	return "codegen-tests.pkg.generated.customapp.v1_0.CustomKindInnerObject2"
}

// +k8s:openapi-gen=true
type CustomKindUnionType interface{}

// +k8s:openapi-gen=true
type CustomKindType1 struct {
	Group   string   `json:"group"`
	Options []string `json:"options,omitempty"`
}

// NewCustomKindType1 creates a new CustomKindType1 object.
func NewCustomKindType1() *CustomKindType1 {
	return &CustomKindType1{}
}

// OpenAPIModelName returns the OpenAPI model name for CustomKindType1.
func (CustomKindType1) OpenAPIModelName() string {
	return "codegen-tests.pkg.generated.customapp.v1_0.CustomKindType1"
}

// +k8s:openapi-gen=true
type CustomKindType2 struct {
	Group   string                 `json:"group"`
	Details map[string]interface{} `json:"details"`
}

// NewCustomKindType2 creates a new CustomKindType2 object.
func NewCustomKindType2() *CustomKindType2 {
	return &CustomKindType2{
		Details: map[string]interface{}{},
	}
}

// OpenAPIModelName returns the OpenAPI model name for CustomKindType2.
func (CustomKindType2) OpenAPIModelName() string {
	return "codegen-tests.pkg.generated.customapp.v1_0.CustomKindType2"
}

// +k8s:openapi-gen=true
type CustomKindRecursiveList struct {
	Val  string                   `json:"val"`
	Next *CustomKindRecursiveList `json:"next,omitempty"`
}

// NewCustomKindRecursiveList creates a new CustomKindRecursiveList object.
func NewCustomKindRecursiveList() *CustomKindRecursiveList {
	return &CustomKindRecursiveList{}
}

// OpenAPIModelName returns the OpenAPI model name for CustomKindRecursiveList.
func (CustomKindRecursiveList) OpenAPIModelName() string {
	return "codegen-tests.pkg.generated.customapp.v1_0.CustomKindRecursiveList"
}

// +k8s:openapi-gen=true
type CustomKindSpec struct {
	Field1       string                     `json:"field1"`
	Inner        CustomKindInnerObject1     `json:"inner"`
	Union        CustomKindUnionType        `json:"union"`
	Map          map[string]CustomKindType2 `json:"map"`
	Timestamp    time.Time                  `json:"timestamp"`
	Enum         CustomKindSpecEnum         `json:"enum"`
	I32          int32                      `json:"i32"`
	I64          int64                      `json:"i64"`
	BoolField    bool                       `json:"boolField"`
	FloatField   float64                    `json:"floatField"`
	LinkedList   CustomKindRecursiveList    `json:"linkedList"`
	ExclusiveInt uint64                     `json:"exclusiveInt"`
}

// NewCustomKindSpec creates a new CustomKindSpec object.
func NewCustomKindSpec() *CustomKindSpec {
	return &CustomKindSpec{
		Inner:      *NewCustomKindInnerObject1(),
		Map:        map[string]CustomKindType2{},
		Enum:       CustomKindSpecEnumDefault,
		BoolField:  false,
		LinkedList: *NewCustomKindRecursiveList(),
	}
}

// OpenAPIModelName returns the OpenAPI model name for CustomKindSpec.
func (CustomKindSpec) OpenAPIModelName() string {
	return "codegen-tests.pkg.generated.customapp.v1_0.CustomKindSpec"
}

// +k8s:openapi-gen=true
type CustomKindSpecEnum string

const (
	CustomKindSpecEnumVal1    CustomKindSpecEnum = "val1"
	CustomKindSpecEnumVal2    CustomKindSpecEnum = "val2"
	CustomKindSpecEnumVal3    CustomKindSpecEnum = "val3"
	CustomKindSpecEnumVal4    CustomKindSpecEnum = "val4"
	CustomKindSpecEnumDefault CustomKindSpecEnum = "default"
)

// OpenAPIModelName returns the OpenAPI model name for CustomKindSpecEnum.
func (CustomKindSpecEnum) OpenAPIModelName() string {
	return "codegen-tests.pkg.generated.customapp.v1_0.CustomKindSpecEnum"
}
