import type { NobjcObject } from "objc-js";
import type { _MPSGraphDevice } from "./MPSGraphDevice.js";
import type { _MPSGraphObject } from "./MPSGraphObject.js";
import type { _NSData } from "../Foundation/NSData.js";
import type { _MTLBuffer } from "../Metal/MTLBuffer.js";
import type { _MTLTensor } from "../Metal/MTLTensor.js";
export declare class _MPSGraphTensorData extends _MPSGraphObject {
    static alloc(): _MPSGraphTensorData;
    static new(): _MPSGraphTensorData;
    init(): _MPSGraphTensorData;
    /**
     * Initializes the tensor data with an `NSData` on a device. - Parameters: - device: MPSDevice on which the MPSGraphTensorData exists - data: NSData from which to copy the contents - shape: shape of the output tensor - dataType: dataType of the placeholder tensor - Returns: A valid MPSGraphTensorData, or nil if allocation failure.
     */
    initWithDevice$data$shape$dataType$(device: _MPSGraphDevice, data: _NSData, shape: NobjcObject, dataType: NobjcObject): _MPSGraphTensorData;
    /**
     * Initializes an tensor data with a metal buffer. The device of the MTLBuffer will be used to get the MPSDevice for this MPSGraphTensorData. - Parameters: - buffer: MTLBuffer to be used within the MPSGraphTensorData - shape: shape of the output tensor - dataType: dataType of the placeholder tensor - Returns: A valid MPSGraphTensorData, or nil if allocation failure.
     */
    initWithMTLBuffer$shape$dataType$(buffer: _MTLBuffer, shape: NobjcObject, dataType: NobjcObject): _MPSGraphTensorData;
    /**
     * Initializes an tensor data with a metal buffer. The device of the MTLBuffer will be used to get the MPSDevice for this MPSGraphTensorData. - Parameters: - buffer: MTLBuffer to be used within the MPSGraphTensorData - shape: shape of the output tensor - dataType: dataType of the placeholder tensor - rowBytes: rowBytes for the fastest moving dimension, must be larger than or equal to sizeOf(dataType)shape[rank - 1] and must be a multiple of sizeOf(dataType) - Returns: A valid MPSGraphTensorData, or nil if allocation failure.
     */
    initWithMTLBuffer$shape$dataType$rowBytes$(buffer: _MTLBuffer, shape: NobjcObject, dataType: NobjcObject, rowBytes: number): _MPSGraphTensorData;
    /**
     * Initializes a tensor data with an MPS matrix. The device of the MPSMatrix will be used to get the MPSDevice for this MPSGraphTensorData. - Parameters: - matrix: MPSMatrix to be used within the MPSGraphTensorData - Returns: A valid MPSGraphTensorData, or nil if allocation failure.
     */
    initWithMPSMatrix$(matrix: NobjcObject): _MPSGraphTensorData;
    /**
     * Initializes a tensor data with an MPS matrix enforcing rank of the result. The device of the MPSMatrix will be used to get the MPSDevice for this MPSGraphTensorData. - Parameters: - matrix: MPSMatrix to be used within the MPSGraphTensorData - rank: The rank of the resulting TensorData tensor. NOTE: must be within { 1, ... ,16 }. - Returns: A valid MPSGraphTensorData of given rank, or nil if allocation failure.
     */
    initWithMPSMatrix$rank$(matrix: NobjcObject, rank: number): _MPSGraphTensorData;
    /**
     * Initializes a tensor data with an MPS vector. The device of the MPSVector will be used to get the MPSDevice for this MPSGraphTensorData. - Parameters: - vector: MPSVector to be used within the MPSGraphTensorData - Returns: A valid MPSGraphTensorData, or nil if allocation failure.
     */
    initWithMPSVector$(vector: NobjcObject): _MPSGraphTensorData;
    /**
     * Initializes a tensor data with an MPS vector enforcing rank of the result. The device of the MPSVector will be used to get the MPSDevice for this MPSGraphTensorData. - Parameters: - vector: MPSVector to be used within the MPSGraphTensorData - rank: The rank of the resulting TensorData tensor. NOTE: must be within { 1, ... ,16 }. - Returns: A valid MPSGraphTensorData, or nil if allocation failure.
     */
    initWithMPSVector$rank$(vector: NobjcObject, rank: number): _MPSGraphTensorData;
    /**
     * Initializes an MPSGraphTensorData with an MPS ndarray. The device of the MPSNDArray will be used to get the MPSDevice for this MPSGraphTensorData. - Parameters: - ndarray: MPSNDArray to be used within the MPSGraphTensorData. - Returns: A valid MPSGraphTensorData, or nil if allocation failure.
     */
    initWithMPSNDArray$(ndarray: NobjcObject): _MPSGraphTensorData;
    /**
     * Initializes a tensor data with an MPS image batch. The dataLayout used will be NHWC, call a transpose or permute to change to a layout of your choice. - Parameters: - imageBatch: The device on which the kernel will run, unorm8 and unorm16 images will create a float32 tensorData - Returns: A valid MPSGraphTensorData, or nil if allocation failure.
     */
    initWithMPSImageBatch$(imageBatch: NobjcObject): _MPSGraphTensorData;
    /**
     * Initializes an MPSGraphTensorData with an MTLTensor. The internal storage of the MTLTensor will be aliased. Requires tensor to support MTLTensorUsageMachineLearning. - Parameters: - tensor: MTLTensor to be used within the MPSGraphTensorData - Returns: A valid MPSGraphTensorData, or nil if allocation failure.
     */
    initWithMTLTensor$(tensor: _MTLTensor): _MPSGraphTensorData;
    /**
     * Return an mpsndarray object will copy contents if the contents are not stored in an MPS ndarray. - Returns: A valid MPSNDArray, or nil if allocation fails.
     */
    mpsndarray(): NobjcObject;
    /** The shape of the tensor data. */
    shape(): NobjcObject;
    /** The data type of the tensor data. */
    dataType(): NobjcObject;
    /** The device of the tensor data. */
    device(): _MPSGraphDevice;
}
