/**
 * @license
 * Copyright Google LLC 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 { Rule } from '@angular-devkit/schematics';
/** Entry point for the migration schematics with target of Angular CDK 6.0.0 */
export declare function updateToV6(): Rule;
/** Entry point for the migration schematics with target of Angular CDK 7.0.0 */
export declare function updateToV7(): Rule;
/** Entry point for the migration schematics with target of Angular CDK 8.0.0 */
export declare function updateToV8(): Rule;
/** Entry point for the migration schematics with target of Angular CDK 9.0.0 */
export declare function updateToV9(): Rule;
/** Entry point for the migration schematics with target of Angular CDK 10.0.0 */
export declare function updateToV10(): Rule;
/** Entry point for the migration schematics with target of Angular CDK 11.0.0 */
export declare function updateToV11(): Rule;
/** Entry point for the migration schematics with target of Angular CDK 12.0.0 */
export declare function updateToV12(): Rule;
