import { IIoK8sApimachineryPkgApisMetaV1ObjectMeta } from "@kubernetes-models/apimachinery/apis/meta/v1/ObjectMeta";
import { IIoK8sApiResourceV1ResourceSliceSpec } from "./ResourceSliceSpec.js";
import { ModelData, TypeMeta, Model } from "@kubernetes-models/base";
/**
 * ResourceSlice represents one or more resources in a pool of similar resources, managed by a common driver. A pool may span more than one ResourceSlice, and exactly how many ResourceSlices comprise a pool is determined by the driver.
 *
 * At the moment, the only supported resources are devices with attributes and capacities. Each device in a given pool, regardless of how many ResourceSlices, must have a unique name. The ResourceSlice in which a device gets published may change over time. The unique identifier for a device is the tuple <driver name>, <pool name>, <device name>.
 *
 * Whenever a driver needs to update a pool, it increments the pool.Spec.Pool.Generation number and updates all ResourceSlices with that new number and new resource definitions. A consumer must only use ResourceSlices with the highest generation number and ignore all others.
 *
 * When allocating all resources in a pool matching certain criteria or when looking for the best solution among several different alternatives, a consumer should check the number of ResourceSlices in a pool (included in each ResourceSlice) to determine whether its view of a pool is complete and if not, should wait until the driver has completed updating the pool.
 *
 * For resources that are not local to a node, the node name is not set. Instead, the driver may use a node selector to specify where the devices are available.
 */
export interface IResourceSlice extends TypeMeta {
    "apiVersion": "resource.k8s.io/v1";
    "kind": "ResourceSlice";
    /**
     * Standard object metadata
     */
    "metadata"?: IIoK8sApimachineryPkgApisMetaV1ObjectMeta;
    /**
     * Contains the information published by the driver.
     *
     * Changing the spec automatically increments the metadata.generation number.
     */
    "spec": IIoK8sApiResourceV1ResourceSliceSpec;
}
/**
 * ResourceSlice represents one or more resources in a pool of similar resources, managed by a common driver. A pool may span more than one ResourceSlice, and exactly how many ResourceSlices comprise a pool is determined by the driver.
 *
 * At the moment, the only supported resources are devices with attributes and capacities. Each device in a given pool, regardless of how many ResourceSlices, must have a unique name. The ResourceSlice in which a device gets published may change over time. The unique identifier for a device is the tuple <driver name>, <pool name>, <device name>.
 *
 * Whenever a driver needs to update a pool, it increments the pool.Spec.Pool.Generation number and updates all ResourceSlices with that new number and new resource definitions. A consumer must only use ResourceSlices with the highest generation number and ignore all others.
 *
 * When allocating all resources in a pool matching certain criteria or when looking for the best solution among several different alternatives, a consumer should check the number of ResourceSlices in a pool (included in each ResourceSlice) to determine whether its view of a pool is complete and if not, should wait until the driver has completed updating the pool.
 *
 * For resources that are not local to a node, the node name is not set. Instead, the driver may use a node selector to specify where the devices are available.
 */
export declare class ResourceSlice extends Model<IResourceSlice> implements IResourceSlice {
    "apiVersion": IResourceSlice["apiVersion"];
    "kind": IResourceSlice["kind"];
    "metadata"?: IIoK8sApimachineryPkgApisMetaV1ObjectMeta;
    "spec": IIoK8sApiResourceV1ResourceSliceSpec;
    static apiVersion: IResourceSlice["apiVersion"];
    static kind: IResourceSlice["kind"];
    static is: import("@kubernetes-models/base").TypeMetaGuard<IResourceSlice>;
    constructor(data?: ModelData<IResourceSlice>);
}
export type { IResourceSlice as IIoK8sApiResourceV1ResourceSlice, ResourceSlice as IoK8sApiResourceV1ResourceSlice };
