import { ExecutorContext } from '@nx/devkit';
import { ProjectTokenizerOptions } from '@storm-software/config-tools';
import { BaseExecutorOptions } from '@storm-software/workspace-tools';
import { BaseExecutorSchema } from '@storm-software/workspace-tools/base/base-executor.schema.d';

interface PulumiCommandOptions {
    stack?: string;
    root?: string;
    parent?: string;
    name?: string;
}
type PulumiExecutorSchema = BaseExecutorSchema & Partial<PulumiCommandOptions>;
type NormalizedPulumiExecutorOptions<TExecutorSchema extends PulumiExecutorSchema = PulumiExecutorSchema> = ProjectTokenizerOptions & TExecutorSchema;
declare const withPulumiExecutor: <TExecutorSchema extends PulumiExecutorSchema = PulumiExecutorSchema>(command: string, argsMapper: (options: NormalizedPulumiExecutorOptions<TExecutorSchema>) => Array<string | false | undefined>, executorOptions?: BaseExecutorOptions<TExecutorSchema>) => (_options: TExecutorSchema, context: ExecutorContext) => Promise<{
    success: boolean;
}>;

export { type NormalizedPulumiExecutorOptions, type PulumiCommandOptions, type PulumiExecutorSchema, withPulumiExecutor };
