import type { _MTLBuffer } from "./MTLBuffer.js";
import type { _MTLResource } from "./MTLResource.js";
import type { _MTLTensorExtents } from "./MTLTensorExtents.js";
import type { MTLResourceID } from "../structs/MTLResourceID.js";
import type { MTLTensorDataType } from "./MTLTensorDataType.js";
import type { MTLTensorUsage } from "./MTLTensorUsage.js";
export interface _MTLTensor extends _MTLResource {
    /**
     * Replaces the contents of a slice of this tensor with data you provide. - Parameters: - sliceOrigin: An array of offsets, in elements, to the first element of the slice that this method writes data to. - sliceDimensions: An array of sizes, in elements, of the slice this method writes data to. - bytes: A pointer to bytes of data that this method copies into the slice you specify with `sliceOrigin` and `sliceDimensions`. - strides: An array of strides, in elements, that describes the layout of the data in `bytes`. You are responsible for ensuring `strides` meets the following requirements: - Elements of `strides`are in monotonically non-decreasing order. - For any `i` larger than zero, `strides[i]` is greater than or equal to `strides[i-1] * dimensions[i-1]`.
     */
    replaceSliceOrigin$sliceDimensions$withBytes$strides$?(sliceOrigin: _MTLTensorExtents, sliceDimensions: _MTLTensorExtents, bytes: Uint8Array, strides: _MTLTensorExtents): void;
    /**
     * Copies the data corresponding to a slice of this tensor into a pointer you provide. - Parameters: - bytes: A pointer to bytes of data that this method copies into the slice you specify with `sliceOrigin` and `sliceDimensions`. - strides: An array of strides, in elements, that describes the layout of the data in `bytes`. You are responsible for ensuring `strides` meets the following requirements: - Elements of `strides`are in monotonically non-decreasing order. - For any `i` larger than zero, `strides[i]` is greater than or equal to `strides[i-1] * dimensions[i-1]`. - sliceOrigin: An array of offsets, in elements, to the first element of the slice that this method reads data from. - sliceDimensions: An array of sizes, in elements, of the slice this method reads data from.
     */
    getBytes$strides$fromSliceOrigin$sliceDimensions$?(bytes: Uint8Array, strides: _MTLTensorExtents, sliceOrigin: _MTLTensorExtents, sliceDimensions: _MTLTensorExtents): void;
    /**
     * A handle that represents the GPU resource, which you can store in an argument buffer.
     */
    gpuResourceID?(): MTLResourceID;
    /**
     * A buffer instance this tensor shares its storage with or nil if this tensor does not wrap an underlying buffer.
     */
    buffer?(): _MTLBuffer | null;
    /**
     * An offset, in bytes, into the buffer instance this tensor shares its storage with, or zero if this tensor does not wrap an underlying buffer.
     */
    bufferOffset?(): number;
    /**
     * An array of strides, in elements, one for each dimension of this tensor. This property only applies if this tensor shares its storage with a buffer, otherwise it's nil.
     */
    strides?(): _MTLTensorExtents | null;
    /** An array of sizes, in elements, one for each dimension of this tensor. */
    dimensions?(): _MTLTensorExtents;
    /** An underlying data format of this tensor. */
    dataType?(): MTLTensorDataType;
    /** A set of contexts in which you can use this tensor. */
    usage?(): MTLTensorUsage;
}
