import type { EncryptionStatus } from '../linodes';
export type KubernetesTier = 'enterprise' | 'standard';
export type KubernetesTaintEffect = 'NoExecute' | 'NoSchedule' | 'PreferNoSchedule';
export type Label = {
    [key: string]: string;
};
export type NodePoolUpdateStrategy = 'on_recycle' | 'rolling_update';
export interface Taint {
    effect: KubernetesTaintEffect;
    key: string;
    value: string | undefined;
}
export interface KubernetesCluster {
    apl_enabled?: boolean;
    control_plane: ControlPlaneOptions;
    created: string;
    id: number;
    k8s_version: string;
    label: string;
    region: string;
    status: string;
    tags: string[];
    /** Marked as 'optional' in this existing interface to prevent duplicated code for beta functionality, in line with the apl_enabled approach.
     * @todo LKE-E - Make this field required once LKE-E is in GA. tier defaults to 'standard' in the API.
     */
    tier?: KubernetesTier;
    updated: string;
}
export interface KubeNodePoolResponse {
    autoscaler: AutoscaleSettings;
    count: number;
    disk_encryption?: EncryptionStatus;
    id: number;
    labels: Label;
    nodes: PoolNodeResponse[];
    tags: string[];
    taints: Taint[];
    type: string;
}
export interface KubeNodePoolResponseBeta extends KubeNodePoolResponse {
    firewall_id: number;
    k8s_version: string;
    update_strategy: NodePoolUpdateStrategy;
}
export interface PoolNodeResponse {
    id: string;
    instance_id: null | number;
    status: string;
}
export interface CreateNodePoolData {
    count: number;
    type: string;
}
export interface CreateNodePoolDataBeta extends CreateNodePoolData {
    firewall_id?: number;
    k8s_version?: string;
    update_strategy?: NodePoolUpdateStrategy;
}
export interface UpdateNodePoolData {
    autoscaler: AutoscaleSettings;
    count: number;
    labels: Label;
    tags: string[];
    taints: Taint[];
}
export interface UpdateNodePoolDataBeta extends UpdateNodePoolData {
    firewall_id?: number;
    k8s_version?: string;
    update_strategy?: NodePoolUpdateStrategy;
}
export interface AutoscaleSettings {
    enabled: boolean;
    max: number;
    min: number;
}
export interface KubeConfigResponse {
    kubeconfig: string;
}
export interface KubernetesVersion {
    id: string;
}
export interface KubernetesTieredVersion {
    id: string;
    tier: KubernetesTier;
}
export interface KubernetesEndpointResponse {
    endpoint: string;
}
export interface KubernetesDashboardResponse {
    url: string;
}
export interface KubernetesControlPlaneACLPayload {
    acl: ControlPlaneACLOptions;
}
export interface ControlPlaneACLOptions {
    addresses?: null | {
        ipv4?: null | string[];
        ipv6?: null | string[];
    };
    enabled?: boolean;
    'revision-id'?: string;
}
export interface ControlPlaneOptions {
    acl?: ControlPlaneACLOptions;
    high_availability?: boolean;
}
export interface CreateKubeClusterPayload {
    apl_enabled?: boolean;
    control_plane?: ControlPlaneOptions;
    k8s_version?: string;
    label?: string;
    node_pools: CreateNodePoolData[];
    region?: string;
    tier?: KubernetesTier;
}
//# sourceMappingURL=types.d.ts.map