import type { NobjcObject } from "objc-js";
import type { _NSArray } from "./NSArray.js";
import type { _NSCoder } from "./NSCoder.js";
import type { _NSCopying } from "./NSCopying.js";
import type { _NSMutableDictionary } from "./NSMutableDictionary.js";
import type { _NSObject } from "./NSObject.js";
import type { _NSPredicate } from "./NSPredicate.js";
import type { _NSString } from "./NSString.js";
import type { NSExpressionType } from "./NSExpressionType.js";
export declare class _NSExpression extends _NSObject {
    static alloc(): _NSExpression;
    static new(): _NSExpression;
    init(): _NSExpression;
    static expressionWithFormat$argumentArray$(expressionFormat: _NSString, arguments_: _NSArray): _NSExpression;
    static expressionWithFormat$(expressionFormat: _NSString): _NSExpression;
    static expressionWithFormat$arguments$(expressionFormat: _NSString, argList: NobjcObject): _NSExpression;
    /** Expression that returns a constant value */
    static expressionForConstantValue$(obj: NobjcObject | null): _NSExpression;
    /** Expression that returns the object being evaluated */
    static expressionForEvaluatedObject(): _NSExpression;
    /** Expression that pulls a value from the variable bindings dictionary */
    static expressionForVariable$(string_: _NSString): _NSExpression;
    /** Expression that invokes valueForKeyPath with keyPath */
    static expressionForKeyPath$(keyPath: _NSString): _NSExpression;
    /**
     * Expression that invokes one of the predefined functions. Will throw immediately if the selector is bad; will throw at runtime if the parameters are incorrect.
     */
    static expressionForFunction$arguments$(name: _NSString, parameters: _NSArray): _NSExpression;
    /**
     * Expression that returns a collection containing the results of other expressions
     */
    static expressionForAggregate$(subexpressions: _NSArray): _NSExpression;
    /**
     * return an expression that will return the union of the collections expressed by left and right
     */
    static expressionForUnionSet$with$(left: _NSExpression, right: _NSExpression): _NSExpression;
    /**
     * return an expression that will return the intersection of the collections expressed by left and right
     */
    static expressionForIntersectSet$with$(left: _NSExpression, right: _NSExpression): _NSExpression;
    /**
     * return an expression that will return the disjunction of the collections expressed by left and right
     */
    static expressionForMinusSet$with$(left: _NSExpression, right: _NSExpression): _NSExpression;
    /**
     * Expression that filters a collection by storing elements in the collection in the variable variable and keeping the elements for which qualifer returns true; variable is used as a local variable, and will shadow any instances of variable in the bindings dictionary, the variable is removed or the old value replaced once evaluation completes
     */
    static expressionForSubquery$usingIteratorVariable$predicate$(expression: _NSExpression, variable: _NSString, predicate: _NSPredicate): _NSExpression;
    /**
     * Expression that invokes the selector on target with parameters. Will throw at runtime if target does not implement selector or if parameters are wrong.
     */
    static expressionForFunction$selectorName$arguments$(target: _NSExpression, name: _NSString, parameters: _NSArray | null): _NSExpression;
    static expressionForAnyKey(): _NSExpression;
    /**
     * Expression that invokes the block with the parameters; note that block expressions are not encodable or representable as parseable strings.
     */
    static expressionForBlock$arguments$(block: ((evaluatedObject: NobjcObject, expressions: _NSArray, context: _NSMutableDictionary) => NobjcObject) | null, arguments_: _NSArray | null): _NSExpression;
    /**
     * Expression that will return the result of trueExpression or falseExpression depending on the value of predicate
     */
    static expressionForConditional$trueExpression$falseExpression$(predicate: _NSPredicate, trueExpression: _NSExpression, falseExpression: _NSExpression): _NSExpression;
    initWithExpressionType$(type: NSExpressionType): _NSExpression;
    initWithCoder$(coder: _NSCoder): _NSExpression | null;
    /**
     * evaluate the expression using the object and bindings- note that context is mutable here and can be used by expressions to store temporary state for one predicate evaluation
     */
    expressionValueWithObject$context$(object_: NobjcObject | null, context: _NSMutableDictionary | null): NobjcObject | null;
    /** Force an expression which was securely decoded to allow evaluation */
    allowEvaluation(): void;
    /** accessors for individual parameters - raise if not applicable */
    expressionType(): NSExpressionType;
    constantValue(): NobjcObject | null;
    keyPath(): _NSString;
    function(): _NSString;
    variable(): _NSString;
    /**
     * the object on which the selector will be invoked (the result of evaluating a key path or one of the defined functions)
     */
    operand(): _NSExpression;
    /**
     * array of expressions which will be passed as parameters during invocation of the selector on the operand of a function expression
     */
    arguments(): _NSArray | null;
    collection(): NobjcObject;
    predicate(): _NSPredicate;
    /** expression which represents the left side of a set expression */
    leftExpression(): _NSExpression;
    /** expression which represents the right side of a set expression */
    rightExpression(): _NSExpression;
    /**
     * expression which will be evaluated if a conditional expression's predicate evaluates to true
     */
    trueExpression(): _NSExpression;
    /**
     * expression which will be evaluated if a conditional expression's predicate evaluates to false
     */
    falseExpression(): _NSExpression;
    expressionBlock(): ((arg0: NobjcObject, arg1: _NSArray, arg2: _NSMutableDictionary) => NobjcObject) | null;
}
export interface _NSExpression extends _NSCopying {
}
