import { BinaryOp, TrinaryOp, UnaryOp } from './base'; import { AllIntTypes, BoolTypes, IntTypes, ScalarTypes, SimpleTypes, UintTypes, ValueTypes } from './types'; import { DynoVal } from './value'; export declare const and: (a: DynoVal, b: DynoVal) => DynoVal; export declare const or: (a: DynoVal, b: DynoVal) => DynoVal; export declare const xor: (a: DynoVal, b: DynoVal) => DynoVal; export declare const not: (a: DynoVal) => DynoVal; export declare const lessThan: (a: DynoVal, b: DynoVal) => DynoVal>; export declare const lessThanEqual: (a: DynoVal, b: DynoVal) => DynoVal>; export declare const greaterThan: (a: DynoVal, b: DynoVal) => DynoVal>; export declare const greaterThanEqual: (a: DynoVal, b: DynoVal) => DynoVal>; export declare const equal: (a: DynoVal, b: DynoVal) => DynoVal>; export declare const notEqual: (a: DynoVal, b: DynoVal) => DynoVal>; export declare const any: (a: DynoVal) => DynoVal<"bool">; export declare const all: (a: DynoVal) => DynoVal<"bool">; export declare const select: (cond: DynoVal<"bool">, t: DynoVal, f: DynoVal) => DynoVal; export declare const compXor: (a: DynoVal) => DynoVal>; export declare class And extends BinaryOp { constructor({ a, b }: { a: DynoVal; b: DynoVal; }); } export declare class Or extends BinaryOp { constructor({ a, b }: { a: DynoVal; b: DynoVal; }); } export declare class Xor extends BinaryOp { constructor({ a, b }: { a: DynoVal; b: DynoVal; }); } export declare class Not extends UnaryOp { constructor({ a }: { a: DynoVal; }); } export declare class LessThan extends BinaryOp, "lessThan"> { constructor({ a, b }: { a: DynoVal; b: DynoVal; }); } export declare class LessThanEqual extends BinaryOp, "lessThanEqual"> { constructor({ a, b }: { a: DynoVal; b: DynoVal; }); } export declare class GreaterThan extends BinaryOp, "greaterThan"> { constructor({ a, b }: { a: DynoVal; b: DynoVal; }); } export declare class GreaterThanEqual extends BinaryOp, "greaterThanEqual"> { constructor({ a, b }: { a: DynoVal; b: DynoVal; }); } export declare class Equal extends BinaryOp, "equal"> { constructor({ a, b }: { a: DynoVal; b: DynoVal; }); } export declare class NotEqual extends BinaryOp, "notEqual"> { constructor({ a, b }: { a: DynoVal; b: DynoVal; }); } export declare class Any extends UnaryOp { constructor({ a }: { a: DynoVal; }); } export declare class All extends UnaryOp { constructor({ a }: { a: DynoVal; }); } export declare class Select extends TrinaryOp<"bool", T, T, T, "select"> { constructor({ cond, t, f, }: { cond: DynoVal<"bool">; t: DynoVal; f: DynoVal; }); } type CompareOutput = T extends ScalarTypes ? "bool" : T extends "ivec2" | "uvec2" | "vec2" ? "bvec2" : T extends "ivec3" | "uvec3" | "vec3" ? "bvec3" : T extends "ivec4" | "uvec4" | "vec4" ? "bvec4" : never; type EqualOutput = A extends ScalarTypes ? "bool" : A extends BoolTypes ? A : A extends "ivec2" | "uvec2" | "vec2" ? "bvec2" : A extends "ivec3" | "uvec3" | "vec3" ? "bvec3" : A extends "ivec4" | "uvec4" | "vec4" ? "bvec4" : never; type NotEqualOutput = EqualOutput; type CompXorOutput = A extends BoolTypes ? "bool" : A extends IntTypes ? "int" : A extends UintTypes ? "uint" : never; export declare class CompXor extends UnaryOp, "compXor"> { constructor({ a }: { a: DynoVal; }); } export {};