import type { _NSCopying } from "../Foundation/NSCopying.js";
import type { _NSObject } from "../Foundation/NSObject.js";
import type { _NSSecureCoding } from "../Foundation/NSSecureCoding.js";
import type { _NSString } from "../Foundation/NSString.js";
import type { _MLDictionaryConstraint } from "./MLDictionaryConstraint.js";
import type { _MLFeatureValue } from "./MLFeatureValue.js";
import type { _MLImageConstraint } from "./MLImageConstraint.js";
import type { _MLMultiArrayConstraint } from "./MLMultiArrayConstraint.js";
import type { _MLSequenceConstraint } from "./MLSequenceConstraint.js";
import type { _MLStateConstraint } from "./MLStateConstraint.js";
import type { MLFeatureType } from "./MLFeatureType.js";
export declare class _MLFeatureDescription extends _NSObject {
    static alloc(): _MLFeatureDescription;
    static new(): _MLFeatureDescription;
    init(): _MLFeatureDescription;
    /** Check if MLFeatureValue is valid based on this description */
    isAllowedValue$(value: _MLFeatureValue): boolean;
    /** Name of feature */
    name(): _NSString;
    /** Type of data */
    type(): MLFeatureType;
    /** Whether this feature can take an undefined value or not */
    optional(): boolean;
    /** Constraint when type == MLFeatureTypeMultiArray, nil otherwise */
    multiArrayConstraint(): _MLMultiArrayConstraint | null;
    /** Constraint when type == MLFeatureTypeImage, nil otherwise */
    imageConstraint(): _MLImageConstraint | null;
    /** Constraint when type == MLFeatureTypeDictionary, nil otherwise */
    dictionaryConstraint(): _MLDictionaryConstraint | null;
    /** Constraint when type == MLFeatureTypeSequence, nil otherwise */
    sequenceConstraint(): _MLSequenceConstraint | null;
    /**
     * The state feature value constraint. The property has a value when `.type == MLFeatureTypeState`.
     */
    stateConstraint(): _MLStateConstraint | null;
}
export interface _MLFeatureDescription extends _NSCopying, _NSSecureCoding {
}
