/// <reference types="node" />
import * as ts from '@schematics/angular/third_party/github.com/Microsoft/TypeScript/lib/typescript';
import { Rule, Tree } from '@angular-devkit/schematics';
import { FileEntry, UpdateRecorder, DirEntry } from '@angular-devkit/schematics/src/tree/interface';
import { Change } from '@schematics/angular/utility/change';
import { FileData } from './models/file-data';
import { ProjectInfo } from './models/project-info';
import { NetgrifApplicationEngine } from '../_commons/schema';
export declare function getProjectInfo(tree: Tree): ProjectInfo;
export declare function getNaeConfigurationString(tree: Tree): string;
export declare function getNaeConfiguration(tree: Tree): NetgrifApplicationEngine;
export declare function commitChangesToFile(tree: Tree, file: FileEntry, changes: Array<Change>): void;
export declare function createChangesRecorder(tree: Tree, file: FileEntry, changes: Array<Change>): UpdateRecorder;
export declare function getAppModule(tree: Tree, projectPath: string): FileData;
export declare function getFileData(tree: Tree, projectRootPath: string, relativeFilePath: string): FileData;
export declare function fileEntryToTsSource(file: FileEntry, encoding?: BufferEncoding | undefined): ts.SourceFile;
export declare function getTsSource(path: string, content: string): ts.SourceFile;
/**
 * A convenience method that creates source files from template files and places them at the specified location in the file system.
 * @param pathToTemplates path relative to the location of the schematic entry-point file
 * (might not necessarily be the same as the file that contains the call!)
 * @param pathToMoveGeneratedFiles path relative to the workspace root where the generated files should be placed
 * @param options the object that supplies parameters to the template files
 */
export declare function createFilesFromTemplates(pathToTemplates: string, pathToMoveGeneratedFiles: string, options?: object): Rule;
/**
 * computes the relative path from one file to another
 * @param sourcePath - path relative to project root of the source file
 * @param destinationPath - path relative to project root of the destination file
 * @return path that leads from source file to destination file
 */
export declare function createRelativePath(sourcePath: string, destinationPath: string): string;
/**
 * Recursively iterates over every file in the project and executes the given lambda with it as the input parameter.
 * @param tree tree to get access to the file system
 * @param lambda the function that is called with each of the project files as it's argument
 */
export declare function forEachProjectFile(tree: Tree, lambda: (fe: FileEntry) => void): void;
/**
 * Recursively iterates over every file in the given directory and executes the given lambda with it as the input parameter.
 * @param subRoot the directory which should be recursively explored.
 * The files in the given directory and all it's subdirectories are processed by this function
 * @param lambda the function that is called with each of the files as it's argument
 */
export declare function forEachSubDirFile(subRoot: DirEntry, lambda: (fe: FileEntry) => void): void;
/**
 * Finds all nodes of the given type among the child nodes of the given node.
 * @param start the node who's children should be searched
 * @param target the type of node that should be found
 * @param recursive whether children of children should be examined recursively or not
 * @returns an array of the children that are of the given type. Order of the children is not guaranteed.
 */
export declare function findNodesInChildren(start: ts.Node, target: ts.SyntaxKind, recursive?: boolean): Array<ts.Node>;
/**
 * Adds another provider to the providers of a specified component
 * @param componentFile the file with the component
 * @param symbolName the class name of the added provider
 * @param insertedText the text that should be inserted into the providers array
 * @param importPath the path from which to import the symbol
 */
export declare function addProviderToComponent(componentFile: FileEntry, symbolName: string, insertedText?: string, importPath?: string | null): Array<Change>;
