import { V1ConfigMap , V1Deployment , V1Namespace , V1Node , V1Pod } from '@kubernetes/client-node' ; see https export interface KubernetesObject { readonly apiVersion : string ; readonly kind : string ; readonly metadata : unknown ; readonly spec : unknown ; } /**
 * Make a kubernetes list out of kubernetes resource type.
 */ interface KubernetesList < T > { readonly apiVersion : string ; readonly kind : KubernetesObjectKinds . List ; readonly items : T [ ] ; readonly metadata : ResultMetadata ; } export type Namespace = Required < V1Namespace > & { readonly kind : KubernetesObjectKinds . Namespace ; } ; export type NamespaceResult = KubernetesList < Namespace > ; export type Deployment = Required < V1Deployment > & { readonly kind : KubernetesObjectKinds . Deployment ; } ; export type DeploymentResult = KubernetesList < Deployment > ; export type ConfigMap = Required < V1ConfigMap > & { readonly kind : KubernetesObjectKinds . ConfigMap ; } ; export type ConfigMapResult = KubernetesList < ConfigMap > ; export type Node = Required < V1Node > & { readonly kind : KubernetesObjectKinds . Node ; } ; export type NodeResult = KubernetesList < Node > ; export type Pod = Required < V1Pod > & { readonly kind : KubernetesObjectKinds . Pod ; } ; export type PodResult = KubernetesList < Pod > ; /**
 * Defines supported Kubernetes object kinds.
 */ export const enum KubernetesObjectKinds { List = 'List' , Bucket = 'Bucket' , GitRepository = 'GitRepository' , HelmRepository = 'HelmRepository' , HelmRelease = 'HelmRelease' , Kustomization = 'Kustomization' , Deployment = 'Deployment' , Namespace = 'Namespace' , Node = 'Node' , Pod = 'Pod' , ConfigMap = 'ConfigMap' } interface KubectlVersion { major : string ; minor : string ; gitVersion : string ; gitCommit : string ; gitTreeState : string ; buildDate : string ; goVersion : string ; compiler : string ; platform : string ; } /**
 * The result of running `kubectl version -o json`
 */ export interface KubectlVersionResult { clientVersion : KubectlVersion ; serverVersion : KubectlVersion ; } export interface ResultMetadata { /**
     * Version of this resource as stored in the underlying database.
     */ readonly resourceVersion : '' ; /**
     * Deprecated in Kubernetes 1.16. Removed in Kubernetes 1.21.
     */ readonly selfLink ? : '' ; } /**
 * DeploymentCondition describes the state of a deployment at a certain point.
 */ export interface DeploymentCondition { /**
     * Last time the condition transitioned from one status to another
     */ lastTransitionTime ? : string ; /**
     * The last time this condition was updated
     */ lastUpdateTime ? : string ; /**
     * A human readable message indicating details about the transition
     */ message ? : string ; /**
     * The reason for the condition's last transition
     */ reason ? : string ; /**
     * Status of the condition, one of True, False, Unknown
     */ status : string ; /**
     * Type of deployment condition
     */ type : string ; } /**
 * LocalObjectReference contains enough information
 * to let you locate the referenced object inside the same namespace.
 */ export interface LocalObjectReference { see https name : string ; } /**
 * JSON represents any valid JSON value. These types are supported:
 * bool, int64, float64, string, []interface{}, map[string]interface{} and nil.
 */ export interface KubernetesJSON { [ key ] : unknown ; } /**
 * Artifact represents the output of a source synchronisation.
 */ export interface Artifact { /**
     * Path is the relative file path of this artifact
     */ readonly path : string ; /**
     * URL is the HTTP address of this artifact
     */ readonly url : string ; /**
     * Revision is a human readable identifier traceable in the origin source system.
     * It can be a Git commit SHA, Git tag, a Helm index timestamp,
     * a Helm chart version, etc.
     */ readonly revision ? : string ; /**
     * Checksum is the SHA1 checksum of the artifact
     */ readonly checksum ? : string ; /**
     * LastUpdateTime is the timestamp corresponding to the last update of this artifact
     */ readonly lastUpdateTime : string ; } /**
 * ObjectMeta is metadata that all persisted resources must have,
 * which includes all objects users must create.
 */ export interface ObjectMeta { see http annotations ? : { [ key ] : string ; } ; /**
     * The name of the cluster which the object belongs to.
     * This is used to distinguish resources with same name
     * and namespace in different clusters.
     * This field is not set anywhere right now,
     * and apiserver is going to ignore it
     * if set in create or update request.
     */ clusterName ? : string ; see https creationTimestamp ? : string ; /**
     * Number of seconds allowed for this object to gracefully terminate
     * before it will be removed from the system.
     * Only set when deletionTimestamp is also set.
     * May only be shortened. Read-only.
     */ deletionGracePeriodSeconds ? : number ; see https deletionTimestamp ? : string ; /**
     * Must be empty before the object is deleted from the registry.
     * Each entry is an identifier for the responsible component
     * that will remove the entry from the list.
     * If the deletionTimestamp of the object is non-nil,
     * entries in this list can only be removed.
     * Finalizers may be processed and removed in any order.
     * Order is NOT enforced because it introduces significant risk of stuck finalizers.
     * finalizers is a shared field, any actor with permission can reorder it.
     * If the finalizer list is processed in order,
     * then this can lead to a situation in which the component responsible
     * for the first finalizer in the list is waiting for a signal
     * (field value, external system, or other) produced by a component
     * responsible for a finalizer later in the list, resulting in a deadlock.
     * Without enforced ordering finalizers are free to order amongst themselves
     * and are not vulnerable to ordering changes in the list.
     */ finalizers ? : string [ ] ; see https generateName ? : string ; /**
     * A sequence number representing a specific generation of the desired state.
     * Populated by the system. Read-only.
     */ generation ? : number ; see http labels ? : { [ key ] : string ; } ; /**
     * ManagedFields maps workflow-id and version to the set of fields
     * that are managed by that workflow. This is mostly for internal housekeeping,
     * and users typically shouldn't need to set or understand this field.
     * A workflow can be the user's name, a controller's name,
     * or the name of a specific apply path like "ci-cd".
     * The set of fields is always in the version
     * that the workflow used when modifying the object.
     */ managedFields ? : ManagedFieldsEntry [ ] ; see http name ? : string ; see http namespace ? : string ; /**
     * List of objects depended by this object.
     * If ALL objects in the list have been deleted,
     * this object will be garbage collected.
     * If this object is managed by a controller,
     * then an entry in this list will point to this controller,
     * with the controller field set to true.
     * There cannot be more than one managing controller.
     */ ownerReferences ? : OwnerReference [ ] ; see https resourceVersion ? : string ; /**
     * SelfLink is a URL representing this object. Populated by the system. Read-only.
     *
     * DEPRECATED Kubernetes will stop propagating this field in 1.20 release
     * and the field is planned to be removed in 1.21 release.
     */ selfLink ? : string ; see http uid ? : string ; } /**
 * OwnerReference contains enough information to let you identify an owning object.
 * An owning object must be in the same namespace as the dependent,
 * or be cluster-scoped, so there is no namespace field.
 */ interface OwnerReference { /**
     * API version of the referent
     */ apiVersion : string ; /**
     * If true, AND if the owner has the "foregroundDeletion" finalizer,
     * then the owner cannot be deleted from the key-value store until this reference is removed.
     * Defaults to false. To set this field, a user needs "delete" permission of the owner,
     * otherwise 422 (Unprocessable Entity) will be returned.
     */ blockOwnerDeletion ? : boolean ; /**
     * If true, this reference points to the managing controller
     */ controller ? : boolean ; see https kind : string ; see http name : string ; see http uid : string ; } /**
 * ManagedFieldsEntry is a workflow-id, a FieldSet and the group version
 * of the resource that the fieldset applies to.
 */ interface ManagedFieldsEntry { /**
     * APIVersion defines the version of this resource that this field set applies to.
     * The format is "group/version" just like the top-level APIVersion field.
     * It is necessary to track the version of a field set because it cannot be automatically converted.
     */ apiVersion ? : string ; /**
     * FieldsType is the discriminator for the different fields format and version.
     * There is currently only one possible value: "FieldsV1".
     */ fieldsType ? : string ; /**
     * FieldsV1 holds the first JSON version format as described in the "FieldsV1" type
     */ fieldsV1 ? : FieldsV1 ; /**
     * Manager is an identifier of the workflow managing these fields
     */ manager ? : string ; /**
     * Operation is the type of operation which lead to this ManagedFieldsEntry being created.
     * The only valid values for this field are 'Apply' and 'Update'.
     */ operation ? : string ; /**
     * Subresource is the name of the subresource used to update that object,
     * or empty string if the object was updated through the main resource.
     * The value of this field is used to distinguish between managers,
     * even if they share the same name.
     * For example, a status update will be distinct from a regular update
     * using the same manager name.
     * Note that the APIVersion field is not related to the Subresource field
     * and it always corresponds to the version of the main resource.
     */ subresource ? : string ; /**
     * Time is timestamp of when these fields were set.
     * It should always be empty if Operation is 'Apply'.
     */ time ? : string ; } see https interface FieldsV1 { [ key ] : unknown ; } /**
 * Cluster providers will have some differences.
 * For example, AKS cluster has special handling
 * for enabling GitOps.
 */ export const enum ClusterProvider { /**
     * Azure Kubernetes Service.
     */ AKS = 'AKS' , /**
     * Cluster managed by Azure Arc.
     */ AzureARC = 'Azure Arc' , /**
     * Any cluster that is not AKS and not Azure Arc is
     * considered generic at this point.
     */ Generic = 'Generic' , /**
     * Error occurred when trying to determine the cluster provider or it's just not loaded yet.
     */ Unknown = 'Unknown' } export type KnownClusterProviders = Exclude < ClusterProvider , ClusterProvider . Unknown > ; export const knownClusterProviders = [ ClusterProvider . AKS , ClusterProvider . AzureARC , ClusterProvider . Generic , ] ;