import type { _NSCopying } from "../Foundation/NSCopying.js";
import type { _NSObject } from "../Foundation/NSObject.js";
import type { MLCGradientClippingType } from "./MLCGradientClippingType.js";
import type { MLCRegularizationType } from "./MLCRegularizationType.js";
export declare class _MLCOptimizerDescriptor extends _NSObject {
    static alloc(): _MLCOptimizerDescriptor;
    static new(): _MLCOptimizerDescriptor;
    init(): _MLCOptimizerDescriptor;
    /**
     * @abstract Create a MLCOptimizerDescriptor object @param learningRate The learning rate @param gradientRescale The gradient rescale value @param regularizationType The regularization type @param regularizationScale The regularization scale @return A new MLCOptimizerDescriptor object.
     */
    static descriptorWithLearningRate$gradientRescale$regularizationType$regularizationScale$(learningRate: number, gradientRescale: number, regularizationType: MLCRegularizationType, regularizationScale: number): _MLCOptimizerDescriptor;
    /**
     * @abstract Create a MLCOptimizerDescriptor object @param learningRate The learning rate @param gradientRescale The gradient rescale value @param appliesGradientClipping Whether to apply gradient clipping @param gradientClipMax The maximum gradient value to be used with gradient clipping @param gradientClipMin The minimum gradient value to be used with gradient clipping @param regularizationType The regularization type @param regularizationScale The regularization scale @return A new MLCOptimizerDescriptor object.
     */
    static descriptorWithLearningRate$gradientRescale$appliesGradientClipping$gradientClipMax$gradientClipMin$regularizationType$regularizationScale$(learningRate: number, gradientRescale: number, appliesGradientClipping: boolean, gradientClipMax: number, gradientClipMin: number, regularizationType: MLCRegularizationType, regularizationScale: number): _MLCOptimizerDescriptor;
    /**
     * @abstract Create an MLCOptimizerDescriptor object @param learningRate The learning rate @param gradientRescale The gradient rescale value @param appliesGradientClipping Whether to apply gradient clipping @param gradientClippingType The type of clipping applied to gradients @param gradientClipMax The maximum gradient value to be used with gradient clipping @param gradientClipMin The minimum gradient value to be used with gradient clipping @param maximumClippingNorm The maximum norm to be used with gradient clipping @param customGlobalNorm If non-zero, the norm to be used instead of calculating the global norm @param regularizationType The regularization type @param regularizationScale The regularization scale @return A new MLCOptimizerDescriptor object.
     */
    static descriptorWithLearningRate$gradientRescale$appliesGradientClipping$gradientClippingType$gradientClipMax$gradientClipMin$maximumClippingNorm$customGlobalNorm$regularizationType$regularizationScale$(learningRate: number, gradientRescale: number, appliesGradientClipping: boolean, gradientClippingType: MLCGradientClippingType, gradientClipMax: number, gradientClipMin: number, maximumClippingNorm: number, customGlobalNorm: number, regularizationType: MLCRegularizationType, regularizationScale: number): _MLCOptimizerDescriptor;
    /** @property learningRate @abstract The learning rate */
    learningRate(): number;
    /**
     * @property gradientRescale @abstract The rescale value applied to gradients during optimizer update
     */
    gradientRescale(): number;
    /**
     * @property appliesGradientClipping @abstract Whether gradient clipping should be applied or not. @discussion The default is false
     */
    appliesGradientClipping(): boolean;
    /**
     * @property gradientClipMax @abstract The maximum gradient value if gradient clipping is enabled before gradient is rescaled.
     */
    gradientClipMax(): number;
    /**
     * @property gradientClipMin @abstract The minimum gradient value if gradient clipping is enabled before gradient is rescaled.
     */
    gradientClipMin(): number;
    /** @property regularizationScale @abstract The regularization scale. */
    regularizationScale(): number;
    /** @property regularizationType @abstract The regularization type. */
    regularizationType(): MLCRegularizationType;
    /**
     * @property gradientClippingType @abstract The type of clipping applied to gradient
     */
    gradientClippingType(): MLCGradientClippingType;
    /** @property maximumClippingNorm @abstract The maximum clipping value */
    maximumClippingNorm(): number;
    /**
     * @property customGlobalNorm @abstract Used only with MLCGradientClippingTypeByGlobalNorm. If non zero, this norm will be used in place of global norm.
     */
    customGlobalNorm(): number;
}
export interface _MLCOptimizerDescriptor extends _NSCopying {
}
