import { logging, Path, PathFragment, virtualFs } from '@angular-devkit/core';
import { GenerateOptions } from './generate';
import { Tree } from '../shared/tree';
import { FileBuffer } from '@angular-devkit/core/src/virtual-fs/host/interface';
import { Observable } from 'rxjs';
export declare function scheduleTarget(root: string, opts: {
    project: string;
    target: string;
    configuration: string;
    runOptions: any;
    executor: string;
}, verbose: boolean): Promise<Observable<import('@angular-devkit/architect').BuilderOutput>>;
export declare class NxScopedHost extends virtualFs.ScopedHost<any> {
    constructor(root: Path);
    read(path: Path): Observable<FileBuffer>;
    write(path: Path, content: FileBuffer): Observable<void>;
    isFile(path: Path): Observable<boolean>;
    exists(path: Path): Observable<boolean>;
    workspaceConfigName(): Promise<string>;
    protected context(path: string): Observable<{
        isWorkspaceConfig: boolean;
        actualConfigFileName: any;
        isNewFormat: boolean;
    }>;
    private writeWorkspaceConfiguration;
    private writeWorkspaceConfigFiles;
    protected resolveInlineProjectConfigurations(config: {
        projects: Record<string, any>;
    }): Observable<Object>;
}
/**
 * This host contains the workaround needed to run Angular migrations
 */
export declare class NxScopedHostForMigrations extends NxScopedHost {
    constructor(root: Path);
    read(path: Path): Observable<FileBuffer>;
    write(path: Path, content: FileBuffer): Observable<void>;
}
export declare class NxScopeHostUsedForWrappedSchematics extends NxScopedHost {
    private readonly host;
    constructor(root: Path, host: Tree);
    read(path: Path): Observable<FileBuffer>;
    exists(path: Path): Observable<boolean>;
    isDirectory(path: Path): Observable<boolean>;
    isFile(path: Path): Observable<boolean>;
    list(path: Path): Observable<PathFragment[]>;
}
export declare function generate(root: string, opts: GenerateOptions, verbose: boolean): Promise<number>;
export declare function runMigration(root: string, collection: string, schematic: string, isVerbose: boolean): Promise<any>;
/**
 * By default, Angular Devkit schematic collections will be resolved using the Node resolution.
 * This doesn't work if you are testing schematics that refer to other schematics in the
 * same repo.
 *
 * This function can can be used to override the resolution behaviour.
 *
 * Example:
 *
 * ```typescript
 *   overrideCollectionResolutionForTesting({
 *     '@nrwl/workspace': path.join(__dirname, '../../../../workspace/generators.json'),
 *     '@nrwl/angular': path.join(__dirname, '../../../../angular/generators.json'),
 *     '@nrwl/linter': path.join(__dirname, '../../../../linter/generators.json')
 *   });
 *
 * ```
 */
export declare function overrideCollectionResolutionForTesting(collections: {
    [name: string]: string;
}): void;
/**
 * If you have an Nx Devkit generator invoking the wrapped Angular Devkit schematic,
 * and you don't want the Angular Devkit schematic to run, you can mock it up using this function.
 *
 * Unfortunately, there are some edge cases in the Nx-Angular devkit integration that
 * can be seen in the unit tests context. This function is useful for handling that as well.
 *
 * In this case, you can mock it up.
 *
 * Example:
 *
 * ```typescript
 *   mockSchematicsForTesting({
 *     'mycollection:myschematic': (tree, params) => {
 *        tree.write('README.md');
 *     }
 *   });
 *
 * ```
 */
export declare function mockSchematicsForTesting(schematics: {
    [name: string]: (host: Tree, generatorOptions: {
        [k: string]: any;
    }) => Promise<void>;
}): void;
export declare function wrapAngularDevkitSchematic(collectionName: string, generatorName: string): (host: Tree, generatorOptions: {
    [k: string]: any;
}) => Promise<any>;
export declare function invokeNew(root: string, opts: GenerateOptions, verbose: boolean): Promise<number>;
export declare const getLogger: (isVerbose?: boolean) => logging.Logger;
