/// <reference types="node" />
import { ExecutionOptions, Rule } from '@angular-devkit/schematics';
import { Tree } from '@angular-devkit/schematics/src/tree/interface';
import { CommandLineInputs, CommandLineOptions, INamespace } from '@ionic/cli/definitions';
import { Command } from '@ionic/cli/lib/command';
import { DotAccessor } from '@iotize/common/data-accessor';
import { XmlEditor } from '../xml-editor';
declare type PackageJsonType = {
    scripts?: Record<string, string>;
    cordova?: {
        plugins?: Record<string, Record<string, any>>;
    };
    [key: string]: any;
};
export declare function convertXMLNodeToType<T>(dotAccessor: DotAccessor): T;
export interface UpdateJsonFn<T> {
    (obj: T): T | Promise<T>;
}
export declare function updatePackageFile(host: Tree, callback: UpdateJsonFn<PackageJsonType>): Promise<Tree>;
export declare function updateJsonFile<T>(host: Tree, path: string, callback: UpdateJsonFn<T>): Promise<Tree>;
export declare function getFileContentFromPath(path: string): Buffer;
export declare function shellCommandSchematic({ command, args }: {
    command: string;
    args: string[];
}): Rule;
export declare function updateXMLFile(tree: Tree, path: string, editFunction: (content: XmlEditor) => void): void;
/**
* Run a schematic from a separate collection.
*
* @param collectionName The name of the collection that contains the schematic to run.
* @param schematicName The name of the schematic to run.
* @param options The options to pass as input to the RuleFactory.
*/
export declare function externalPrivateSchematic<OptionT extends object>(collectionName: string, schematicName: string, options: OptionT, executionOptions?: Partial<ExecutionOptions>): Rule;
export declare function ionicCommandFactory(cmdFactory: (namespace: INamespace) => Command): Promise<{
    executor: import("@ionic/cli/lib/executor").Executor;
    cmd: Command;
}>;
export declare function runIonicCommand(cmdFactory: (namespace: INamespace) => Command, cmdinputs?: CommandLineInputs, cmdoptions?: CommandLineOptions): Promise<void>;
/**
 * TODO find another wait
 * does not work...
 */
export declare function refreshTreeFromFile(tree: Tree, file: string): void;
export {};
