import type * as wgsl from './wgslTypes.ts';
import type { VecKind } from './wgslTypes.ts';
type vBase = {
    kind: VecKind;
};
type MatKind = 'mat2x2f' | 'mat3x3f' | 'mat4x4f';
/**
 * Functions that cannot be simply generalized via `generalizeFn`
 * have their overloads listed explicitly here.
 */
export declare const VectorOps: {
    all: Record<VecKind, (v: wgsl.AnyBooleanVecInstance) => boolean>;
    length: Record<VecKind, (v: vBase) => number>;
    mulMxM: Record<VecKind | MatKind, <T extends vBase | wgsl.AnyMatInstance>(lhs: T, rhs: T) => T>;
    mulMxV: Record<MatKind, <T extends wgsl.AnyMatInstance>(m: T, v: wgsl.vBaseForMat<T>) => wgsl.vBaseForMat<T>>;
    mulVxM: Record<MatKind, <T extends wgsl.AnyMatInstance>(v: wgsl.vBaseForMat<T>, m: T) => wgsl.vBaseForMat<T>>;
    dot: Record<VecKind, <T extends vBase>(lhs: T, rhs: T) => number>;
    cross: Record<"vec3f" | "vec3h", <T extends wgsl.v3f | wgsl.v3h>(a: T, b: T) => T>;
    bitShiftLeft: Record<VecKind, <T extends wgsl.AnyIntegerVecInstance, U extends wgsl.AnyUnsignedVecInstance>(a: T, b: U) => T>;
    bitShiftRight: Record<VecKind, <T extends wgsl.AnyIntegerVecInstance, U extends wgsl.AnyUnsignedVecInstance>(a: T, b: U) => T>;
    bitcastU32toF32: Record<VecKind, <T extends wgsl.AnyUnsignedVecInstance>(v: T) => T extends wgsl.v2u ? wgsl.v2f : T extends wgsl.v3u ? wgsl.v3f : wgsl.v4f>;
    bitcastU32toI32: Record<VecKind, <T extends wgsl.AnyUnsignedVecInstance>(v: T) => T extends wgsl.v2u ? wgsl.v2i : T extends wgsl.v3u ? wgsl.v3i : wgsl.v4i>;
    bitcastF32toU32: Record<VecKind, <T extends wgsl.AnyFloatVecInstance>(v: T) => T extends wgsl.v2f ? wgsl.v2u : T extends wgsl.v3f ? wgsl.v3u : wgsl.v4u>;
};
export {};
