import type { NobjcObject } from "objc-js";
import type { _MPSGraphCompilationDescriptor } from "./MPSGraphCompilationDescriptor.js";
import type { _MPSGraphDevice } from "./MPSGraphDevice.js";
import type { _MPSGraphExecutableExecutionDescriptor } from "./MPSGraphExecutableExecutionDescriptor.js";
import type { _MPSGraphExecutableSerializationDescriptor } from "./MPSGraphExecutableSerializationDescriptor.js";
import type { _MPSGraphObject } from "./MPSGraphObject.js";
import type { _NSArray } from "../Foundation/NSArray.js";
import type { _NSURL } from "../Foundation/NSURL.js";
import type { _MTLCommandQueue } from "../Metal/MTLCommandQueue.js";
import type { MPSGraphOptions } from "./MPSGraphOptions.js";
export declare class _MPSGraphExecutable extends _MPSGraphObject {
    static alloc(): _MPSGraphExecutable;
    static new(): _MPSGraphExecutable;
    init(): _MPSGraphExecutable;
    /**
     * Specialize the executable and optimize it. Use this method to choose when specialization happens, else it occurs at encode time automatically. - Parameters: - device:Ooptional MPSGraph device to compile with. - inputTypes: Input types expected to be passed to the executable. - compilationDescriptor: Compilation descriptor to be used to specialize, since the executable was created with a compilationDescriptor already this one overrides those settings to the extent it can.
     */
    specializeWithDevice$inputTypes$compilationDescriptor$(device: _MPSGraphDevice | null, inputTypes: _NSArray, compilationDescriptor: _MPSGraphCompilationDescriptor | null): void;
    /**
     * Get output shapes for a specialized executable. In case specialization has not been done yet then calling this function will specialize for the given input shapes. - Parameters: - device: Optional MPSGraph device to compile with - inputTypes: Input types expected to be passed to the executable. - compilationDescriptor: CompilationDescriptor to be used to specialize, since the executable was created with a compilationDescriptor already this one overrides those settings to the extent it can.
     */
    getOutputTypesWithDevice$inputTypes$compilationDescriptor$(device: _MPSGraphDevice | null, inputTypes: _NSArray, compilationDescriptor: _MPSGraphCompilationDescriptor | null): _NSArray | null;
    /**
     * Runs the graph for the given feeds and returns the target tensor values, ensuring all target operations also executed. This call is synchronous and will return on completion of execution. - Parameters: - commandQueue: CommandQueue passed to exectute the graph on. - inputsArray: Feeds tensorData for the placeholder tensors, same order as arguments of main function. - resultsArray: Results tensorData for which the caller wishes MPSGraphTensorData to be returned. - Returns: A valid MPSGraphTensorData array with results synchronized to the CPU memory if MPSGraphOptionsSynchronizeResults set.
     */
    runWithMTLCommandQueue$inputsArray$resultsArray$executionDescriptor$(commandQueue: _MTLCommandQueue, inputsArray: _NSArray, resultsArray: _NSArray | null, executionDescriptor: _MPSGraphExecutableExecutionDescriptor | null): _NSArray;
    /**
     * Runs the graph for the given feeds and returns the target tensor values, ensuring all target operations also executed. This call is asynchronous and will return immediately. - Parameters: - commandQueue: CommandQueue passed to exectute the graph on. - inputsArray: Feeds tensorData for the placeholder tensors, same order as arguments of main function. - resultsArray: Tensors for which the caller wishes MPSGraphTensorData to be returned. - executionDescriptor: ExecutionDescriptor to be passed in and used. - Returns: A valid MPSGraphTensorData array with results synchronized to the CPU memory if MPSGraphOptionsSynchronizeResults set.
     */
    runAsyncWithMTLCommandQueue$inputsArray$resultsArray$executionDescriptor$(commandQueue: _MTLCommandQueue, inputsArray: _NSArray, resultsArray: _NSArray | null, executionDescriptor: _MPSGraphExecutableExecutionDescriptor | null): _NSArray;
    /**
     * Runs the graph for the given feeds and returns the target tensor values, ensuring all target operations also executed. This call is asynchronous and will return immediately after finishing encoding. - Parameters: - commandBuffer: CommandBuffer passed to exectute the graph on, commitAndContinue might be called, please don't rely on underlying MTLCommandBuffer to remain uncommitted - inputsArray: Feeds tensorData for the placeholder tensors, same order as arguments of main function - resultsArray: Tensors for which the caller wishes MPSGraphTensorData to be returned - executionDescriptor: ExecutionDescriptor to be passed in and used, - Returns: A valid MPSGraphTensorData array with results synchronized to the CPU memory if MPSGraphOptionsSynchronizeResults set.
     */
    encodeToCommandBuffer$inputsArray$resultsArray$executionDescriptor$(commandBuffer: NobjcObject, inputsArray: _NSArray, resultsArray: _NSArray | null, executionDescriptor: _MPSGraphExecutableExecutionDescriptor | null): _NSArray;
    /**
     * Serialize the MPSGraph executable at the provided url. - Parameters: - url: The URL where to serialize the MPSGraph executable. - descriptor: The descriptor to be used to serialize the graph.
     */
    serializeToMPSGraphPackageAtURL$descriptor$(url: _NSURL, descriptor: _MPSGraphExecutableSerializationDescriptor | null): void;
    /**
     * Initialize the executable with the Metal Performance Shaders Graph package at the provided URL. - Parameters: - mpsgraphPackageURL: The URL where to read the serialized MPSGraphExecutable. - compilationDescriptor: Compilation descriptor to be used to specialize, since the executable was created with a compilationDescriptor already this one overrides those settings to the extent it can.
     */
    initWithMPSGraphPackageAtURL$compilationDescriptor$(mpsgraphPackageURL: _NSURL, compilationDescriptor: _MPSGraphCompilationDescriptor | null): _MPSGraphExecutable;
    /**
     * Initialize the executable with the Core ML model package at the provided URL. - Parameters: - coreMLPackageURL: The URL where to read the Core ML model package. - compilationDescriptor: Compilation descriptor to be used to specialize, since the executable was created with a compilationDescriptor already this one overrides those settings to the extent it can.
     */
    initWithCoreMLPackageAtURL$compilationDescriptor$(coreMLPackageURL: _NSURL, compilationDescriptor: _MPSGraphCompilationDescriptor | null): _MPSGraphExecutable;
    /** Options for the graph executable. Default value is `MPSGraphOptionsDefault`. */
    options(): MPSGraphOptions;
    setOptions$(value: MPSGraphOptions): void;
    /**
     * Tensors fed to the graph, can be used to order the inputs when executable is created with a graph.
     */
    feedTensors(): _NSArray | null;
    /**
     * Tensors targeted by the graph, can be used to order the outputs when executable was created with a graph.
     */
    targetTensors(): _NSArray | null;
}
