/// <amd-module name="@angular/core/schematics/migrations/undecorated-classes-with-di/decorator_rewrite/decorator_rewriter" />
/**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
import { AotCompiler } from '@angular/compiler';
import { PartialEvaluator } from '@angular/compiler-cli/src/ngtsc/partial_evaluator';
import * as ts from 'typescript';
import { ImportManager } from '../../../utils/import_manager';
import { NgDecorator } from '../../../utils/ng_decorators';
/**
 * Class that can be used to copy decorators to a new location. The rewriter ensures that
 * identifiers and imports are rewritten to work in the new file location. Fields in a
 * decorator that cannot be cleanly copied will be copied with a comment explaining that
 * imports and identifiers need to be adjusted manually.
 */
export declare class DecoratorRewriter {
    private importManager;
    private typeChecker;
    private evaluator;
    private compiler;
    previousSourceFile: ts.SourceFile | null;
    newSourceFile: ts.SourceFile | null;
    newProperties: ts.ObjectLiteralElementLike[];
    nonCopyableProperties: ts.ObjectLiteralElementLike[];
    private importRewriterFactory;
    constructor(importManager: ImportManager, typeChecker: ts.TypeChecker, evaluator: PartialEvaluator, compiler: AotCompiler);
    rewrite(ngDecorator: NgDecorator, newSourceFile: ts.SourceFile): ts.Decorator;
    /** Creates a new decorator with the given expression. */
    private _createDecorator;
    /**
     * Sanitizes a metadata property by ensuring that all contained identifiers
     * are imported in the target source file.
     */
    private _sanitizeMetadataProperty;
}
