// Copyright 2025 Microsoft Corporation
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//     http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
// Code generated by applyconfiguration-gen. DO NOT EDIT.

package internal

import (
	fmt "fmt"
	sync "sync"

	typed "sigs.k8s.io/structured-merge-diff/v6/typed"
)

func Parser() *typed.Parser {
	parserOnce.Do(func() {
		var err error
		parser, err = typed.NewParser(schemaYAML)
		if err != nil {
			panic(fmt.Sprintf("Failed to parse schema: %v", err))
		}
	})
	return parser
}

var parserOnce sync.Once
var parser *typed.Parser
var schemaYAML = typed.YAMLObject(`types:
- name: com.github.Azure.ARO-HCP.sessiongate.pkg.apis.sessiongate.v1alpha1.AccessLevel
  map:
    fields:
    - name: group
      type:
        scalar: string
      default: ""
- name: com.github.Azure.ARO-HCP.sessiongate.pkg.apis.sessiongate.v1alpha1.HostedControlPlane
  map:
    fields:
    - name: namespace
      type:
        scalar: string
      default: ""
    - name: resourceId
      type:
        scalar: string
      default: ""
- name: com.github.Azure.ARO-HCP.sessiongate.pkg.apis.sessiongate.v1alpha1.ManagementCluster
  map:
    fields:
    - name: resourceId
      type:
        scalar: string
      default: ""
- name: com.github.Azure.ARO-HCP.sessiongate.pkg.apis.sessiongate.v1alpha1.Principal
  map:
    fields:
    - name: name
      type:
        scalar: string
      default: ""
    - name: type
      type:
        scalar: string
      default: ""
- name: com.github.Azure.ARO-HCP.sessiongate.pkg.apis.sessiongate.v1alpha1.Session
  map:
    fields:
    - name: apiVersion
      type:
        scalar: string
    - name: kind
      type:
        scalar: string
    - name: metadata
      type:
        namedType: io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta
      default: {}
    - name: spec
      type:
        namedType: com.github.Azure.ARO-HCP.sessiongate.pkg.apis.sessiongate.v1alpha1.SessionSpec
      default: {}
    - name: status
      type:
        namedType: com.github.Azure.ARO-HCP.sessiongate.pkg.apis.sessiongate.v1alpha1.SessionStatus
      default: {}
- name: com.github.Azure.ARO-HCP.sessiongate.pkg.apis.sessiongate.v1alpha1.SessionSpec
  map:
    fields:
    - name: accessLevel
      type:
        namedType: com.github.Azure.ARO-HCP.sessiongate.pkg.apis.sessiongate.v1alpha1.AccessLevel
      default: {}
    - name: hostedControlPlane
      type:
        namedType: com.github.Azure.ARO-HCP.sessiongate.pkg.apis.sessiongate.v1alpha1.HostedControlPlane
      default: {}
    - name: managementCluster
      type:
        namedType: com.github.Azure.ARO-HCP.sessiongate.pkg.apis.sessiongate.v1alpha1.ManagementCluster
      default: {}
    - name: owner
      type:
        namedType: com.github.Azure.ARO-HCP.sessiongate.pkg.apis.sessiongate.v1alpha1.Principal
      default: {}
    - name: ttl
      type:
        namedType: io.k8s.apimachinery.pkg.apis.meta.v1.Duration
- name: com.github.Azure.ARO-HCP.sessiongate.pkg.apis.sessiongate.v1alpha1.SessionStatus
  map:
    fields:
    - name: backendKASURL
      type:
        scalar: string
    - name: conditions
      type:
        list:
          elementType:
            namedType: io.k8s.apimachinery.pkg.apis.meta.v1.Condition
          elementRelationship: associative
          keys:
          - type
    - name: credentialsSecretRef
      type:
        scalar: string
    - name: endpoint
      type:
        scalar: string
    - name: expiresAt
      type:
        namedType: io.k8s.apimachinery.pkg.apis.meta.v1.Time
- name: io.k8s.apimachinery.pkg.apis.meta.v1.Condition
  map:
    fields:
    - name: lastTransitionTime
      type:
        namedType: io.k8s.apimachinery.pkg.apis.meta.v1.Time
    - name: message
      type:
        scalar: string
      default: ""
    - name: observedGeneration
      type:
        scalar: numeric
    - name: reason
      type:
        scalar: string
      default: ""
    - name: status
      type:
        scalar: string
      default: ""
    - name: type
      type:
        scalar: string
      default: ""
- name: io.k8s.apimachinery.pkg.apis.meta.v1.Duration
  scalar: string
- name: io.k8s.apimachinery.pkg.apis.meta.v1.FieldsV1
  map:
    elementType:
      scalar: untyped
      list:
        elementType:
          namedType: __untyped_atomic_
        elementRelationship: atomic
      map:
        elementType:
          namedType: __untyped_deduced_
        elementRelationship: separable
- name: io.k8s.apimachinery.pkg.apis.meta.v1.ManagedFieldsEntry
  map:
    fields:
    - name: apiVersion
      type:
        scalar: string
    - name: fieldsType
      type:
        scalar: string
    - name: fieldsV1
      type:
        namedType: io.k8s.apimachinery.pkg.apis.meta.v1.FieldsV1
    - name: manager
      type:
        scalar: string
    - name: operation
      type:
        scalar: string
    - name: subresource
      type:
        scalar: string
    - name: time
      type:
        namedType: io.k8s.apimachinery.pkg.apis.meta.v1.Time
- name: io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta
  map:
    fields:
    - name: annotations
      type:
        map:
          elementType:
            scalar: string
    - name: creationTimestamp
      type:
        namedType: io.k8s.apimachinery.pkg.apis.meta.v1.Time
    - name: deletionGracePeriodSeconds
      type:
        scalar: numeric
    - name: deletionTimestamp
      type:
        namedType: io.k8s.apimachinery.pkg.apis.meta.v1.Time
    - name: finalizers
      type:
        list:
          elementType:
            scalar: string
          elementRelationship: associative
    - name: generateName
      type:
        scalar: string
    - name: generation
      type:
        scalar: numeric
    - name: labels
      type:
        map:
          elementType:
            scalar: string
    - name: managedFields
      type:
        list:
          elementType:
            namedType: io.k8s.apimachinery.pkg.apis.meta.v1.ManagedFieldsEntry
          elementRelationship: atomic
    - name: name
      type:
        scalar: string
    - name: namespace
      type:
        scalar: string
    - name: ownerReferences
      type:
        list:
          elementType:
            namedType: io.k8s.apimachinery.pkg.apis.meta.v1.OwnerReference
          elementRelationship: associative
          keys:
          - uid
    - name: resourceVersion
      type:
        scalar: string
    - name: selfLink
      type:
        scalar: string
    - name: uid
      type:
        scalar: string
- name: io.k8s.apimachinery.pkg.apis.meta.v1.OwnerReference
  map:
    fields:
    - name: apiVersion
      type:
        scalar: string
      default: ""
    - name: blockOwnerDeletion
      type:
        scalar: boolean
    - name: controller
      type:
        scalar: boolean
    - name: kind
      type:
        scalar: string
      default: ""
    - name: name
      type:
        scalar: string
      default: ""
    - name: uid
      type:
        scalar: string
      default: ""
    elementRelationship: atomic
- name: io.k8s.apimachinery.pkg.apis.meta.v1.Time
  scalar: untyped
- name: __untyped_atomic_
  scalar: untyped
  list:
    elementType:
      namedType: __untyped_atomic_
    elementRelationship: atomic
  map:
    elementType:
      namedType: __untyped_atomic_
    elementRelationship: atomic
- name: __untyped_deduced_
  scalar: untyped
  list:
    elementType:
      namedType: __untyped_atomic_
    elementRelationship: atomic
  map:
    elementType:
      namedType: __untyped_deduced_
    elementRelationship: separable
`)
