import { Optimizer, Tensor } from '@tensorflow/tfjs-core';
import { ConfigDict, Serializable, SerializableConstructor } from '@tensorflow/tfjs-core/dist/serialization';
import { NamedTensor, NamedVariableMap } from '@tensorflow/tfjs-core/dist/tensor_types';
import { default as LRScheduler } from './LRScheduler';
import { AdamWOptimizerConfig } from './types';
export declare class AdamWOptimizer extends Optimizer {
    private config;
    readonly className = "AdamW";
    private accBeta1;
    private accBeta2;
    private accumulatedMoments;
    protected learningRate: number;
    protected beta1: number;
    protected beta2: number;
    protected lossScaling: number;
    protected weightDecay: number;
    protected epsilon: number | null;
    protected lrScheduler: LRScheduler;
    protected clipNorm?: number;
    protected orthGradEpsilon: number;
    protected orthGrad: boolean;
    constructor(config: AdamWOptimizerConfig);
    get lr(): number;
    saveMoments(): Promise<ArrayBuffer>;
    loadMoments(momentData: ArrayBuffer): Promise<void>;
    serializeConfig(): AdamWOptimizerConfig;
    private orthogonalizeGradient;
    updateConfig(newConfig: Partial<AdamWOptimizerConfig>): void;
    applyGradients(variableGradients: NamedVariableMap | NamedTensor[]): Tensor;
    dispose(): void;
    getWeights(): Promise<NamedTensor[]>;
    setWeights(weightValues: NamedTensor[]): Promise<void>;
    getConfig(): ConfigDict;
    /** @nocollapse */
    static fromConfig<T extends Serializable>(cls: SerializableConstructor<T>, config: ConfigDict): T;
}
