import type { NobjcObject } from "objc-js";
import type { _MPSGraphObject } from "./MPSGraphObject.js";
import type { _NSCopying } from "../Foundation/NSCopying.js";
import type { MPSGraphPaddingStyle } from "./MPSGraphPaddingStyle.js";
import type { MPSGraphPoolingReturnIndicesMode } from "./MPSGraphPoolingReturnIndicesMode.js";
import type { MPSGraphTensorNamedDataLayout } from "./MPSGraphTensorNamedDataLayout.js";
export declare class _MPSGraphPooling2DOpDescriptor extends _MPSGraphObject {
    static alloc(): _MPSGraphPooling2DOpDescriptor;
    static new(): _MPSGraphPooling2DOpDescriptor;
    init(): _MPSGraphPooling2DOpDescriptor;
    /**
     * Creates a 2D pooling descriptor with given values. - Parameters: - kernelWidth: See `kernelWidth` property. - kernelHeight: See `kernelHeight` property. - strideInX: See `strideInX` property. - strideInY: See `strideInY` property. - dilationRateInX: See `dilationRateInX` property. - dilationRateInY: See `dilationRateInY` property. - paddingLeft: See `paddingLeft` property. - paddingRight: See `paddingRight` property. - paddingTop: See `paddingTop` property. - paddingBottom: See `paddingBottom` property. - paddingStyle: See `paddingStyle` property. - dataLayout: See `dataLayout` property. - Returns: The descriptor on autoreleasepool.
     */
    static descriptorWithKernelWidth$kernelHeight$strideInX$strideInY$dilationRateInX$dilationRateInY$paddingLeft$paddingRight$paddingTop$paddingBottom$paddingStyle$dataLayout$(kernelWidth: number, kernelHeight: number, strideInX: number, strideInY: number, dilationRateInX: number, dilationRateInY: number, paddingLeft: number, paddingRight: number, paddingTop: number, paddingBottom: number, paddingStyle: MPSGraphPaddingStyle, dataLayout: MPSGraphTensorNamedDataLayout): _MPSGraphPooling2DOpDescriptor | null;
    /**
     * Creates a 2D pooling descriptor with given values. - Parameters: - kernelWidth: See `kernelWidth` property. - kernelHeight: See `kernelHeight`` property. - strideInX: See `strideInX` property. - strideInY: See `strideInY` property. - paddingStyle: See `paddingStyle` property. - dataLayout: See `dataLayout` property. - Returns: The descriptor on autoreleasepool.
     */
    static descriptorWithKernelWidth$kernelHeight$strideInX$strideInY$paddingStyle$dataLayout$(kernelWidth: number, kernelHeight: number, strideInX: number, strideInY: number, paddingStyle: MPSGraphPaddingStyle, dataLayout: MPSGraphTensorNamedDataLayout): _MPSGraphPooling2DOpDescriptor | null;
    /**
     * Sets the explicit padding values and sets padding style to explicit. - Parameters: - paddingLeft: See `paddingLeft` property. - paddingRight: See `paddingRight` property. - paddingTop: See `paddingTop` property. - paddingBottom: See `paddingBottom` property.
     */
    setExplicitPaddingWithPaddingLeft$paddingRight$paddingTop$paddingBottom$(paddingLeft: number, paddingRight: number, paddingTop: number, paddingBottom: number): void;
    /** Defines the pooling window size for the width dimension. */
    kernelWidth(): number;
    setKernelWidth$(value: number): void;
    /** Defines the pooling window size for the height dimension. */
    kernelHeight(): number;
    setKernelHeight$(value: number): void;
    /** Defines the stride for the width dimension. Default value: 1. */
    strideInX(): number;
    setStrideInX$(value: number): void;
    /** Defines the stride for the height dimension. Default value: 1. */
    strideInY(): number;
    setStrideInY$(value: number): void;
    /** Defines the dilation rate for the width dimension. Default value: 1. */
    dilationRateInX(): number;
    setDilationRateInX$(value: number): void;
    /** Defines the dilation rate for the height dimension. Default value: 1. */
    dilationRateInY(): number;
    setDilationRateInY$(value: number): void;
    /**
     * Defines the explicit padding value for the width dimension to add before the data. Default value: 0.
     */
    paddingLeft(): number;
    setPaddingLeft$(value: number): void;
    /**
     * Defines the explicit padding value for the width dimension to add after the data. Default value: 0.
     */
    paddingRight(): number;
    setPaddingRight$(value: number): void;
    /**
     * Defines the explicit padding value for the height dimension to add before the data. Default value: 0.
     */
    paddingTop(): number;
    setPaddingTop$(value: number): void;
    /**
     * Defines the explicit padding value for the height dimension to add after the data. Default value: 0.
     */
    paddingBottom(): number;
    setPaddingBottom$(value: number): void;
    /**
     * Defines what kind of padding graph applies to the operation. Default value: `MPSGraphPaddingStyleExplicit`.
     */
    paddingStyle(): MPSGraphPaddingStyle;
    setPaddingStyle$(value: MPSGraphPaddingStyle): void;
    /**
     * Defines the data layout of the input data in the forward pass. See: ``MPSGraphTensorNamedDataLayout``.
     */
    dataLayout(): MPSGraphTensorNamedDataLayout;
    setDataLayout$(value: MPSGraphTensorNamedDataLayout): void;
    /**
     * Defines the mode for returned indices of maximum values within each pooling window. Use this in conjunction with ``MPSGraph/maxPooling2DReturnIndicesWithSourceTensor:descriptor:name:`` API. If `returnIndicesMode = MPSGraphPoolingReturnIndicesNone` then only the first result MPSGraph returns from ``MPSGraph/maxPooling2DReturnIndicesWithSourceTensor:descriptor:name:`` will be valid and using the second result will assert. Default value: `MPSGraphPoolingReturnIndicesNone`.
     */
    returnIndicesMode(): MPSGraphPoolingReturnIndicesMode;
    setReturnIndicesMode$(value: MPSGraphPoolingReturnIndicesMode): void;
    /**
     * Defines the data type for returned indices. Use this in conjunction with ``MPSGraph/maxPooling2DReturnIndicesWithSourceTensor:descriptor:name:`` API. Currently MPSGraph supports the following datatypes: `MPSDataTypeInt32`. Default value: `MPSDataTypeInt32`.
     */
    returnIndicesDataType(): NobjcObject;
    setReturnIndicesDataType$(value: NobjcObject): void;
    /**
     * Affects how the graph computes the output size. if set to `YES` then output size is computed by rounding up instead of down when dividing input size by stride. Default value: `NO`.
     */
    ceilMode(): boolean;
    setCeilMode$(value: boolean): void;
    /**
     * Defines a mode for average pooling, where samples outside the input tensor count as zeroes in the average computation. Otherwise the result is sum over samples divided by number of samples that didn't come from padding. Default value: `NO`.
     */
    includeZeroPadToAverage(): boolean;
    setIncludeZeroPadToAverage$(value: boolean): void;
}
export interface _MPSGraphPooling2DOpDescriptor extends _NSCopying {
}
