import { ModelData, Model } from "@kubernetes-models/base";
/**
 * DeviceConstraint must have exactly one field set besides Requests.
 */
export interface IDeviceConstraint {
    /**
     * DistinctAttribute requires that all devices in question have this attribute and that its type and value are unique across those devices.
     *
     * When the DRAListTypeAttributes feature gate is enabled, comparison uses set semantics (i.e., element order and duplicates are ignored): list-valued attributes must be pairwise disjoint across devices. Scalar values are treated as singleton sets for backward compatibility.
     *
     * This acts as the inverse of MatchAttribute.
     *
     * This constraint is used to avoid allocating multiple requests to the same device by ensuring attribute-level differentiation.
     *
     * This is useful for scenarios where resource requests must be fulfilled by separate physical devices. For example, a container requests two network interfaces that must be allocated from two different physical NICs.
     */
    "distinctAttribute"?: string;
    /**
     * MatchAttribute requires that all devices in question have this attribute and that its type and value are the same across those devices.
     *
     * For example, if you specified "dra.example.com/numa" (a hypothetical example!), then only devices in the same NUMA node will be chosen. A device which does not have that attribute will not be chosen. All devices should use a value of the same type for this attribute because that is part of its specification, but if one device doesn't, then it also will not be chosen.
     *
     * When the DRAListTypeAttributes feature gate is enabled, comparison uses set semantics(i.e., element order and duplicates are ignored): list-valued attributes match when the intersection across all devices is non-empty. Scalar values are treated as single-element lists for backward compatibility.
     *
     * Must include the domain qualifier.
     */
    "matchAttribute"?: string;
    /**
     * Requests is a list of the one or more requests in this claim which must co-satisfy this constraint. If a request is fulfilled by multiple devices, then all of the devices must satisfy the constraint. If this is not specified, this constraint applies to all requests in this claim.
     *
     * References to subrequests must include the name of the main request and may include the subrequest using the format <main request>[/<subrequest>]. If just the main request is given, the constraint applies to all subrequests.
     */
    "requests"?: Array<string>;
}
/**
 * DeviceConstraint must have exactly one field set besides Requests.
 */
export declare class DeviceConstraint extends Model<IDeviceConstraint> implements IDeviceConstraint {
    "distinctAttribute"?: string;
    "matchAttribute"?: string;
    "requests"?: Array<string>;
    constructor(data?: ModelData<IDeviceConstraint>);
}
export type { IDeviceConstraint as IIoK8sApiResourceV1DeviceConstraint, DeviceConstraint as IoK8sApiResourceV1DeviceConstraint };
