export declare namespace VariableCondition {
    type SimpleValue = string | number | boolean;
    interface FormulaValue {
        _type: 'fx';
        code: string;
    }
    interface BaseCondition<T extends string> {
        id: string;
        keyPath: string[];
        op: T;
    }
    interface HasValueCondition<T extends string, V> extends BaseCondition<T> {
        value: V | FormulaValue;
    }
    interface AndCondition {
        id: string;
        op: 'and';
        children: Desc[];
    }
    interface OrCondition {
        id: string;
        op: 'or';
        children: Desc[];
    }
    interface NullCondition extends BaseCondition<'isNull'> {
    }
    interface NotNullCondition extends BaseCondition<'isNotNull'> {
    }
    type EqCondition = HasValueCondition<'eq', SimpleValue>;
    type NeqCondition = HasValueCondition<'neq', SimpleValue>;
    type GtCondition = HasValueCondition<'gt', number>;
    type LtCondition = HasValueCondition<'lt', number>;
    type GteCondition = HasValueCondition<'gte', number>;
    type LteCondition = HasValueCondition<'lte', number>;
    type LikeCondition = HasValueCondition<'like', string>;
    type NotLikeCondition = HasValueCondition<'notLike', string>;
    type IncludesCondition = HasValueCondition<'includes', SimpleValue>;
    type NotIncludesCondition = HasValueCondition<'notIncludes', SimpleValue>;
    type InCondition = HasValueCondition<'in', SimpleValue[]>;
    type NotInCondition = HasValueCondition<'notIn', SimpleValue[]>;
    type HasAnyOfCondition = HasValueCondition<'hasAnyOf', SimpleValue[]>;
    type NotAnyOfCondition = HasValueCondition<'notAnyOf', SimpleValue[]>;
    type Desc = AndCondition | OrCondition | NullCondition | NotNullCondition | EqCondition | NeqCondition | GtCondition | LtCondition | GteCondition | LteCondition | LikeCondition | NotLikeCondition | IncludesCondition | NotIncludesCondition | InCondition | NotInCondition | HasAnyOfCondition | NotAnyOfCondition;
    type Normal = Exclude<Desc, AndCondition | OrCondition>;
    type HasChildren = AndCondition | OrCondition;
}
