import { ExecutorContext, PromiseExecutor } from '@nx/devkit';
import { S as StormWorkspaceConfig } from './types-Dug-2iKz.js';

// Generated by @storm-software/untyped
// Do not edit this file directly

interface NapiExecutorSchema {
 /**
  * Output Path
  * 
  * The path to the output directory
  * 
  * @default "{sourceRoot}"
  * 
  * @format path
 */
 outputPath: string,

 /**
  * Package Name
  * 
  * Build the specified library or the one at cwd
  * 
 */
 package: string,

 /**
  * Toolchain
  * 
  * The type of toolchain to use for the build
  * 
  * @default "stable"
  * 
  * @enum stable,beta,nightly
 */
 toolchain?: string,

 /**
  * Target Triple
  * 
  * Build for the target triple, bypassed to `cargo build --target`
  * 
 */
 target?: string,

 /**
  * All Targets
  * 
  * Build all targets
  * 
 */
 allTargets?: boolean,

 /**
  * Cargo Profile
  * 
  * Build artifacts with the specified profile
  * 
 */
 profile?: string,

 /**
  * Release Mode
  * 
  * Build in release mode
  * 
 */
 release?: boolean,

 /**
  * Cargo Features
  * 
  * List of features to activate
  * 
 */
 features?: Array<string>,

 /**
  * All Features
  * 
  * Activate all available features
  * 
 */
 allFeatures?: boolean,

 /**
  * JS Binding File
  * 
  * The path to the output JavaScript file
  * 
  * @default "binding.js"
 */
 jsBinding: string,

 /**
  * DTS Binding File
  * 
  * The path to the output TypeScript declaration file
  * 
  * @default "binding.d.ts"
 */
 dts: string,

 /**
  * Manifest Path
  * 
  * The path to the Cargo.toml manifest file
  * 
  * 
  * @format path
 */
 manifestPath: string,

 /**
  * Working Directory
  * 
  * Working directory where napi command will be executed; other paths are relative to this
  * 
  * 
  * @format path
 */
 cwd?: string,

 /**
  * NAPI Config Path
  * 
  * Path to napi config JSON file
  * 
  * 
  * @format path
 */
 configPath?: string,

 /**
  * package.json Path
  * 
  * Path to package.json
  * 
  * 
  * @format path
 */
 packageJsonPath?: string,

 /**
  * Cargo Target Dir
  * 
  * Directory for all crate generated artifacts (cargo build --target-dir)
  * 
  * 
  * @format path
 */
 targetDir?: string,

 /**
  * Platform Suffix
  * 
  * Add platform triple to generated Node.js binding file, e.g. [name].linux-x64-gnu.node
  * 
  * @default true
 */
 platform?: boolean,

 /**
  * JS Package Name
  * 
  * Package name in generated JS binding file. Works only with --platform
  * 
 */
 jsPackageName?: string,

 /**
  * Const Enum
  * 
  * Whether to generate const enum for TypeScript bindings
  * 
 */
 constEnum?: boolean,

 /**
  * Disable JS Binding
  * 
  * Disable generation of JS binding file. Works only with --platform
  * 
 */
 noJsBinding?: boolean,

 /**
  * DTS Header
  * 
  * Custom file header for generated type def file (requires typedef feature)
  * 
 */
 dtsHeader?: string,

 /**
  * Disable Default DTS Header
  * 
  * Disable default file header for generated type def file (requires typedef feature)
  * 
 */
 noDtsHeader?: boolean,

 /**
  * Enable DTS Cache
  * 
  * Enable the DTS cache
  * 
  * @default true
 */
 dtsCache?: boolean,

 /**
  * ESM Output
  * 
  * Emit an ESM JS binding file instead of CJS (works only with --platform)
  * 
 */
 esm?: boolean,

 /**
  * Strip Binary
  * 
  * Strip the library to minimize file size
  * 
 */
 strip?: boolean,

 /**
  * Verbose
  * 
  * Verbosely log build command trace
  * 
 */
 verbose?: boolean,

 /**
  * Binary
  * 
  * Build only the specified binary
  * 
 */
 bin?: string,

 /**
  * Cross Compile
  * 
  * [experimental] Cross-compile for the specified target with cargo-xwin on Windows and cargo-zigbuild on other platforms
  * 
 */
 crossCompile?: boolean,

 /**
  * Use cross
  * 
  * [experimental] Use cross (https://github.com/cross-rs/cross) instead of cargo
  * 
 */
 useCross?: boolean,

 /**
  * Use @napi-rs/cross-toolchain
  * 
  * [experimental] Use @napi-rs/cross-toolchain to cross-compile Linux arm/arm64/x64 gnu targets
  * 
 */
 useNapiCross?: boolean,

 /**
  * Watch
  * 
  * Watch crate changes and build continuously with cargo-watch
  * 
 */
 watch?: boolean,

 /**
  * No Default Features
  * 
  * Do not activate the default feature
  * 
 */
 noDefaultFeatures?: boolean,
}

/**
 * Build N-API bindings using NAPI-RS
 *
 * @param options - Executor options
 * @param context - Executor context
 * @param config - Storm workspace config
 * @returns Executor result
 */
declare function napiExecutor(options: NapiExecutorSchema, context: ExecutorContext, config: StormWorkspaceConfig): Promise<{
    success: boolean;
    terminalOutput?: undefined;
} | {
    success: boolean;
    terminalOutput: {
        kind: "node" | "js" | "dts" | "exe" | "wasm";
        path: string;
    }[];
}>;
declare const _default: PromiseExecutor<NapiExecutorSchema>;

export { type NapiExecutorSchema as N, _default as _, napiExecutor as n };
