import type { DType } from '../dtype.ts'; import { WeakValueMap } from '../helpers/helpers.ts'; import { Ops, type sint, type UOp, type Variable } from '../ops.ts'; export type TC = [number, number]; type TensorCoreArgs = { dims: [number, number, number]; threads: number; elements_per_thread: [number, number, number]; dtype_in: DType; dtype_out: DType; opts: string[]; swizzle: [[number[], number[]] | undefined, [number[], number[]] | undefined]; }; export declare class TensorCore { _id: bigint; static cache: WeakValueMap; dims: [number, number, number]; threads: number; elements_per_thread: [number, number, number]; dtype_in: DType; dtype_out: DType; opts: string[]; swizzle: [[number[], number[]] | undefined, [number[], number[]] | undefined]; constructor(args: TensorCoreArgs); get_reduce_axes: () => number[][]; get_upcast_axes: () => string[]; get_local_axes: () => string[]; toString: () => string; } export declare class Estimates { ops: sint; lds: sint; mem: sint; constructor(ops?: sint, lds?: sint, mem?: sint); add: (o: Estimates) => Estimates; simplify: () => Estimates; static from_uops: (uops: UOp[], ignore_indexing?: boolean) => Estimates; } export declare class ProgramSpec { name: string; src: string; device: string; uops?: UOp[] | undefined; mem_estimate: number; global_size?: number[] | undefined; local_size?: number[] | undefined; vars: Variable[]; globals: number[]; outs: number[]; ins: number[]; _ran_post_init: boolean; constructor(name: string, src: string, device: string, uops?: UOp[] | undefined, mem_estimate?: number, global_size?: number[] | undefined, local_size?: number[] | undefined, vars?: Variable[], globals?: number[], outs?: number[], ins?: number[], _ran_post_init?: boolean); private _estimates; get estimates(): Estimates; launch_dims: (varVals: Map) => (number[] | undefined)[]; } export declare class Renderer { device: string; suffix: string; supports_float4: boolean; has_local: boolean; has_shared: boolean; global_max?: [number, number, number]; local_max: number[]; shared_max: number; tensor_cores: TensorCore[] | undefined; extra_matcher?: any; code_for_op: Map, (...a: string[]) => string>; render: (name: string, uops: UOp[]) => string; } export {};