import type { NobjcObject } from "objc-js";
import type { _NSArray } from "../Foundation/NSArray.js";
import type { _NSDictionary } from "../Foundation/NSDictionary.js";
import type { _NSObject } from "../Foundation/NSObject.js";
import type { _NSString } from "../Foundation/NSString.js";
import type { _NSAnimatablePropertyContainer } from "./NSAnimatablePropertyContainer.js";
import type { _NSLayoutAnchor } from "./NSLayoutAnchor.js";
import type { NSLayoutAttribute } from "./NSLayoutAttribute.js";
import type { NSLayoutFormatOptions } from "./NSLayoutFormatOptions.js";
import type { NSLayoutRelation } from "./NSLayoutRelation.js";
export declare class _NSLayoutConstraint extends _NSObject {
    static alloc(): _NSLayoutConstraint;
    static new(): _NSLayoutConstraint;
    init(): _NSLayoutConstraint;
    /**
     * Create an array of constraints using an ASCII-art-like visual format string. The values of the `metrics` dictionary should be NSNumber (or some other type that responds to -doubleValue and returns a double).
     */
    static constraintsWithVisualFormat$options$metrics$views$(format: _NSString, opts: NSLayoutFormatOptions, metrics: _NSDictionary | null, views: _NSDictionary): _NSArray;
    /**
     * Create constraints explicitly. Constraints are of the form "view1.attr1 = view2.attr2 * multiplier + constant" If your equation does not have a second view and attribute, use nil and NSLayoutAttributeNotAnAttribute. Use of this method is not recommended. Constraints should be created using anchor objects on views and layout guides.
     */
    static constraintWithItem$attribute$relatedBy$toItem$attribute$multiplier$constant$(view1: NobjcObject, attr1: NSLayoutAttribute, relation: NSLayoutRelation, view2: NobjcObject | null, attr2: NSLayoutAttribute, multiplier: number, c: number): _NSLayoutConstraint;
    /**
     * Convenience method that activates each constraint in the contained array, in the same manner as setting active=YES. This is often more efficient than activating each constraint individually.
     */
    static activateConstraints$(constraints: _NSArray): void;
    /**
     * Convenience method that deactivates each constraint in the contained array, in the same manner as setting active=NO. This is often more efficient than deactivating each constraint individually.
     */
    static deactivateConstraints$(constraints: _NSArray): void;
    priority(): number;
    setPriority$(value: number): void;
    /**
     * When a view is archived, it archives some but not all constraints in its -constraints array. The value of shouldBeArchived informs the view if a particular constraint should be archived by the view. If a constraint is created at runtime in response to the state of the object, it isn't appropriate to archive the constraint - rather you archive the state that gives rise to the constraint. Since the majority of constraints that should be archived are created in Interface Builder (which is smart enough to set this prop to YES), the default value for this property is NO.
     */
    shouldBeArchived(): boolean;
    setShouldBeArchived$(value: boolean): void;
    /**
     * accessors firstItem.firstAttribute {==,<=,>=} secondItem.secondAttribute * multiplier + constant Access to these properties is not recommended. Use the `firstAnchor` and `secondAnchor` properties instead.
     */
    firstItem(): NobjcObject | null;
    secondItem(): NobjcObject | null;
    firstAttribute(): NSLayoutAttribute;
    secondAttribute(): NSLayoutAttribute;
    /** accessors firstAnchor{==,<=,>=} secondAnchor * multiplier + constant */
    firstAnchor(): _NSLayoutAnchor;
    secondAnchor(): _NSLayoutAnchor | null;
    relation(): NSLayoutRelation;
    multiplier(): number;
    /**
     * Unlike the other properties, the constant may be modified after constraint creation. Setting the constant on an existing constraint performs much better than removing the constraint and adding a new one that's just like the old but for having a new constant.
     */
    constant(): number;
    setConstant$(value: number): void;
    /**
     * The receiver may be activated or deactivated by manipulating this property. Only active constraints affect the calculated layout. Attempting to activate a constraint whose items have no common ancestor will cause an exception to be thrown. Defaults to NO for newly created constraints.
     */
    active(): boolean;
    setActive$(value: boolean): void;
    /**
     * For ease in debugging, name a constraint by setting its identifier, which will be printed in the constraint's description. Identifiers starting with NS or UI are reserved by the system.
     */
    identifier(): _NSString | null;
    setIdentifier$(value: _NSString | null): void;
}
export interface _NSLayoutConstraint extends _NSAnimatablePropertyContainer {
}
