import { WeakValueMap } from '../helpers/helpers.ts'; import { Ops, type sint, UOp, type Variable } from '../ops.ts'; import { View } from './view.ts'; export declare const overflow: (u: UOp) => number | bigint; export declare const upcast: (u: UOp) => UOp; export declare const folded_upcast: (u: UOp) => UOp; export declare class ShapeTracker { views: View[]; _id: bigint; static cache: WeakValueMap; constructor(views: View[]); add: (st: ShapeTracker) => ShapeTracker; toString: () => string; invert: (out_shape: sint[]) => undefined | ShapeTracker; static from_shape: (shape: sint[]) => ShapeTracker; get contiguous(): boolean; get consecutive(): boolean; get shape(): sint[]; get size(): number; reduce: (axis: number[]) => sint[]; to_uop: () => UOp; to_indexed_uops: (_idxs?: UOp[]) => [UOp, UOp]; real_size: () => number; vars: () => Variable[]; get var_vals(): Map; unbind: () => [ShapeTracker, Map]; real_strides: (ignore_valid?: boolean) => (sint | undefined)[]; unit_stride_axes: (ignore_valid?: boolean) => number[]; axis_is_masked: (axis: number) => boolean; simplify: () => ShapeTracker; pad: (arg: [sint, sint][]) => ShapeTracker; shrink: (arg: [sint, sint][]) => ShapeTracker; expand: (new_shape: sint[]) => ShapeTracker; permute: (axis: number[]) => ShapeTracker; stride: (multi: number[]) => ShapeTracker; reshape: (new_shape: sint[]) => ShapeTracker; mop: (op: Ops, arg: any) => ShapeTracker; }