import { Input, Op, Param, ADBase, ADConstructor, Value } from './base'; import { VectorOp, WithVecDependencies, ScalarWithVecDependencies } from './vecBase'; export declare class VecMix extends WithVecDependencies { definition(): string; derivative(param: Param): string; } export declare class VecClamp extends WithVecDependencies { definition(): string; derivative(param: Param): string; } export declare class VecMin extends WithVecDependencies { definition(): string; derivative(param: Param): string; } export declare class VecMax extends WithVecDependencies { definition(): string; derivative(param: Param): string; } export declare class VecIfElse extends WithVecDependencies { size(): number; definition(): string; derivative(param: Param): string; } export declare class VecNormalize extends WithVecDependencies { size(): number; definition(): string; derivative(param: Param): string; } export declare class VecAbs extends WithVecDependencies { size(): number; definition(): string; derivative(param: Param): string; } export declare class Dot extends ScalarWithVecDependencies { definition(): string; derivative(param: Param): string; } export declare class Length extends ScalarWithVecDependencies { scalar(): boolean; definition(): string; derivative(param: Param): string; } export declare class Dist extends ScalarWithVecDependencies { definition(): string; derivative(param: Param): string; } export declare class Cross extends WithVecDependencies { size(): number; definition(): string; derivative(param: Param): string; } export declare class Normalize extends WithVecDependencies { size(): number; definition(): string; derivative(param: Param): string; } declare module './vecBase' { interface VectorOp { mix(other: VectorOp, amt: Input): VectorOp; clamp(min: VectorOp, max: VectorOp): VectorOp; min(...params: VectorOp[]): VectorOp; max(...params: VectorOp[]): VectorOp; dot(other: VectorOp): Op; length(): Op; dist(other: VectorOp): Op; adjustNormal(normal: VecParam, position: VecParam): VectorOp; } } declare module './base' { interface Op { vecIfElse(thenOp: VectorOp, elseOp: VectorOp): VectorOp; } } export declare function WithVecFunctions(Base: T): { new (...args: any[]): { vecMix: (a: VectorOp, b: VectorOp, amt: Input) => VectorOp; vecClamp: (val: VectorOp, min: VectorOp, max: VectorOp) => VectorOp; vecMin: (...params: VectorOp[]) => VectorOp; vecMax: (...params: VectorOp[]) => VectorOp; dot: (a: VectorOp, b: VectorOp) => Op; length: (val: VectorOp) => Op; dist: (a: VectorOp, b: VectorOp) => Op; getNextID(): number; val(n: number): Value; registerParam(param: Op, name: string): any; param(name: string): Param; convertVal(param: Input): Op; convertVals(params: Input[]): Op[]; output(name: string, op: Op): ADBase; outputDeriv(name: string, param: string | Param, op: Op): ADBase; settings: import("./base").ADSettings; }; } & T;