import type { _MLCLayer } from "./MLCLayer.js";
import type { _MLCLossDescriptor } from "./MLCLossDescriptor.js";
import type { _MLCTensor } from "./MLCTensor.js";
import type { MLCReductionType } from "./MLCReductionType.js";
export declare class _MLCLossLayer extends _MLCLayer {
    static alloc(): _MLCLossLayer;
    static new(): _MLCLossLayer;
    init(): _MLCLossLayer;
    /**
     * @abstract Create a loss layer @param lossDescriptor The loss descriptor @return A new loss layer.
     */
    static layerWithDescriptor$(lossDescriptor: _MLCLossDescriptor): _MLCLossLayer;
    /**
     * @abstract Create a MLComputeLoss layer @param lossDescriptor The loss descriptor @param weights The loss label weights tensor @return A new loss layer.
     */
    static layerWithDescriptor$weights$(lossDescriptor: _MLCLossDescriptor, weights: _MLCTensor): _MLCLossLayer;
    /**
     * @abstract Create a loss layer @param reductionType The reduction type to use @param labelSmoothing Label smoothing value @param classCount Number of classes @param weight A scalar floating point value @return A new softmax cross entropy loss layer.
     */
    static softmaxCrossEntropyLossWithReductionType$labelSmoothing$classCount$weight$(reductionType: MLCReductionType, labelSmoothing: number, classCount: number, weight: number): _MLCLossLayer;
    /**
     * @abstract Create a loss layer @param reductionType The reduction type to use @param labelSmoothing Label smoothing value @param classCount Number of classes @param weights The loss label weights tensor @return A new softmax cross entropy loss layer.
     */
    static softmaxCrossEntropyLossWithReductionType$labelSmoothing$classCount$weights$(reductionType: MLCReductionType, labelSmoothing: number, classCount: number, weights: _MLCTensor | null): _MLCLossLayer;
    /**
     * @abstract Create a loss layer @param reductionType The reduction type to use @param labelSmoothing Label smoothing value @param classCount Number of classes @param weight A scalar floating point value @return A new categorical cross entropy loss layer.
     */
    static categoricalCrossEntropyLossWithReductionType$labelSmoothing$classCount$weight$(reductionType: MLCReductionType, labelSmoothing: number, classCount: number, weight: number): _MLCLossLayer;
    /**
     * @abstract Create a loss layer @param reductionType The reduction type to use @param labelSmoothing Label smoothing value @param classCount Number of classes @param weights The loss label weights tensor @return A new categorical cross entropy loss layer.
     */
    static categoricalCrossEntropyLossWithReductionType$labelSmoothing$classCount$weights$(reductionType: MLCReductionType, labelSmoothing: number, classCount: number, weights: _MLCTensor | null): _MLCLossLayer;
    /**
     * @abstract Create a loss layer @param reductionType The reduction type to use @param labelSmoothing Label smoothing value @param weight A scalar floating-point value @return A new sigmoid cross entropy loss layer.
     */
    static sigmoidCrossEntropyLossWithReductionType$labelSmoothing$weight$(reductionType: MLCReductionType, labelSmoothing: number, weight: number): _MLCLossLayer;
    /**
     * @abstract Create a loss layer @param reductionType The reduction type to use @param labelSmoothing Label smoothing value @param weights The loss label weights tensor @return A new sigmoid cross entropy loss layer.
     */
    static sigmoidCrossEntropyLossWithReductionType$labelSmoothing$weights$(reductionType: MLCReductionType, labelSmoothing: number, weights: _MLCTensor | null): _MLCLossLayer;
    /**
     * @abstract Create a loss layer @param reductionType The reduction type to use @param epsilon The epsilon parameter @param weight A scalar floating-point value @return A new log loss layer.
     */
    static logLossWithReductionType$epsilon$weight$(reductionType: MLCReductionType, epsilon: number, weight: number): _MLCLossLayer;
    /**
     * @abstract Create a loss layer @param reductionType The reduction type to use @param epsilon The epsilon parameter @param weights The loss label weights tensor @return A new log loss layer.
     */
    static logLossWithReductionType$epsilon$weights$(reductionType: MLCReductionType, epsilon: number, weights: _MLCTensor | null): _MLCLossLayer;
    /**
     * @abstract Create a loss layer @param reductionType The reduction type to use @param delta The delta parameter @param weight A scalar floating-point value @return A new huber loss layer.
     */
    static huberLossWithReductionType$delta$weight$(reductionType: MLCReductionType, delta: number, weight: number): _MLCLossLayer;
    /**
     * @abstract Create a loss layer @param reductionType The reduction type to use @param delta The delta parameter @param weights The loss label weights tensor @return A new huber loss layer.
     */
    static huberLossWithReductionType$delta$weights$(reductionType: MLCReductionType, delta: number, weights: _MLCTensor | null): _MLCLossLayer;
    /**
     * @abstract Create a loss layer @param reductionType The reduction type to use @param weight A scalar floating-point value @return A new L1 i.e. mean absolute error loss layer.
     */
    static meanAbsoluteErrorLossWithReductionType$weight$(reductionType: MLCReductionType, weight: number): _MLCLossLayer;
    /**
     * @abstract Create a loss layer @param reductionType The reduction type to use @param weights The loss label weights tensor @return A new L1 i.e. mean absolute error loss layer.
     */
    static meanAbsoluteErrorLossWithReductionType$weights$(reductionType: MLCReductionType, weights: _MLCTensor | null): _MLCLossLayer;
    /**
     * @abstract Create a loss layer @param reductionType The reduction type to use @param weight A scalar floating-point value @return A new L2 i.e. mean squared error loss layer.
     */
    static meanSquaredErrorLossWithReductionType$weight$(reductionType: MLCReductionType, weight: number): _MLCLossLayer;
    /**
     * @abstract Create a loss layer @param reductionType The reduction type to use @param weights The loss label weights tensor @return A new L2 i.e. mean squared error loss layer.
     */
    static meanSquaredErrorLossWithReductionType$weights$(reductionType: MLCReductionType, weights: _MLCTensor | null): _MLCLossLayer;
    /**
     * @abstract Create a loss layer @param reductionType The reduction type to use @param weight A scalar floating-point value @return A new hinge loss layer.
     */
    static hingeLossWithReductionType$weight$(reductionType: MLCReductionType, weight: number): _MLCLossLayer;
    /**
     * @abstract Create a loss layer @param reductionType The reduction type to use @param weights The loss label weights tensor @return A new hinge loss layer.
     */
    static hingeLossWithReductionType$weights$(reductionType: MLCReductionType, weights: _MLCTensor | null): _MLCLossLayer;
    /**
     * @abstract Create a loss layer @param reductionType The reduction type to use @param weight A scalar floating-point value @return A new cosine distance loss layer.
     */
    static cosineDistanceLossWithReductionType$weight$(reductionType: MLCReductionType, weight: number): _MLCLossLayer;
    /**
     * @abstract Create a loss layer @param reductionType The reduction type to use @param weights The loss label weights tensor @return A new cosine distance loss layer.
     */
    static cosineDistanceLossWithReductionType$weights$(reductionType: MLCReductionType, weights: _MLCTensor | null): _MLCLossLayer;
    /** @property descriptor @abstract The loss descriptor */
    descriptor(): _MLCLossDescriptor;
    /** @property weights @abstract The loss label weights tensor */
    weights(): _MLCTensor | null;
}
