/* tslint:disable */
/* eslint-disable */

/* auto-generated by NAPI-RS */

/**
 * Expands the given entries into a list of existing directories and files.
 * This is used for copying outputs to and from the cache
 */
export function expandOutputs(directory: string, entries: Array<string>): Array<string>
/**
 * Expands the given outputs into a list of existing files.
 * This is used when hashing outputs
 */
export function getFilesForOutputs(directory: string, entries: Array<string>): Array<string>
export function remove(src: string): void
export function copy(src: string, dest: string): void
export function hashArray(input: Array<string>): string
export function hashFile(file: string): FileData | null
export function hashFiles(workspaceRoot: string): Record<string, string>
export function findImports(projectFileMap: Record<string, Array<string>>): Array<ImportResult>
export interface ExternalNodeData {
  version: string
  hash: string
}
export interface ExternalNode {
  version: string
  hash: string
}
export interface InputsInput {
  input: string
  dependencies?: boolean
}
export interface FileSetInput {
  fileset: string
}
export interface RuntimeInput {
  runtime: string
}
export interface EnvironmentInput {
  env: string
}
export interface ExternalDependenciesInput {
  externalDependencies: Array<string>
}
export interface DepsOutputsInput {
  dependentTasksOutputFiles: string
  transitive?: boolean
}
export interface ProjectsInput {
  projects: string | Array<string>
}
export interface Target {
  executor: string
  inputs?: Array<InputsInput | string | FileSetInput | RuntimeInput | EnvironmentInput | ExternalDependenciesInput | DepsOutputsInput | ProjectsInput>
  outputs?: Array<string>
}
export interface Project {
  root: string
  namedInputs?: Record<string, Array<InputsInput | string | FileSetInput | RuntimeInput | EnvironmentInput | ExternalDependenciesInput | DepsOutputsInput | ProjectsInput>>
  targets: Record<string, Target>
}
export interface ProjectGraph {
  nodes: Record<string, Project>
  dependencies: Record<string, Array<string>>
  externalNodes: Record<string, ExternalNode>
}
export interface FileData {
  file: string
  hash: string
}
/**
 * Newly created files will have the `update` EventType as well.
 * This simplifies logic between OS's, IDEs and git operations
 */
export const enum EventType {
  delete = 'delete',
  update = 'update',
  create = 'create'
}
export interface WatchEvent {
  path: string
  type: EventType
}
/** Public NAPI error codes that are for Node */
export const enum WorkspaceErrors {
  ParseError = 'ParseError',
  Generic = 'Generic'
}
/** Get workspace config files based on provided globs */
export function getProjectConfigurationFiles(workspaceRoot: string, globs: Array<string>): Array<string>
/** Get workspace config files based on provided globs */
export function getProjectConfigurations(workspaceRoot: string, globs: Array<string>, parseConfigurations: (arg0: Array<string>) => ConfigurationParserResult): ConfigurationParserResult
export interface NxWorkspaceFiles {
  projectFileMap: Record<string, Array<FileData>>
  globalFiles: Array<FileData>
  projectConfigurations: Record<string, object>
  externalNodes: Record<string, object>
}
export function getWorkspaceFilesNative(workspaceRoot: string, globs: Array<string>, parseConfigurations: (arg0: Array<string>) => ConfigurationParserResult): NxWorkspaceFiles
export interface ConfigurationParserResult {
  projectNodes: Record<string, object>
  externalNodes: Record<string, object>
}
export class ImportResult {
  file: string
  sourceProject: string
  dynamicImportExpressions: Array<string>
  staticImportExpressions: Array<string>
}
export class Watcher {
  origin: string
  /**
   * Creates a new Watcher instance.
   * If `useIgnore` is set to false, no ignores will be used, even when `additionalGlobs` is set
   */
  constructor(origin: string, additionalGlobs?: Array<string> | undefined | null, useIgnore?: boolean | undefined | null)
  watch(callback: (err: string | null, events: WatchEvent[]) => void): void
  stop(): Promise<void>
}
