/// <reference types="node" />
import { Terraform, TerraformPlan, TerraformOutput, AbstractTerraformPlan } from "./terraform";
import { SynthesizedStack } from "../synth-stack";
export declare class TerraformCliPlan extends AbstractTerraformPlan implements TerraformPlan {
    readonly planFile: string;
    readonly plan: {
        [key: string]: any;
    };
    constructor(planFile: string, plan: {
        [key: string]: any;
    });
}
export declare class TerraformCli implements Terraform {
    private readonly abortSignal;
    readonly stack: SynthesizedStack;
    readonly workdir: string;
    private readonly onStdout;
    private readonly onStderr;
    constructor(abortSignal: AbortSignal, stack: SynthesizedStack, onLog?: (_stateName: string) => (_stdout: string, _isErr?: boolean) => void);
    init(): Promise<void>;
    plan(destroy?: boolean): Promise<TerraformPlan>;
    deploy(planFile: string, stdout: (chunk: Buffer) => any, extraOptions?: string[]): Promise<void>;
    destroy(stdout: (chunk: Buffer) => any): Promise<void>;
    version(): Promise<string>;
    output(): Promise<{
        [key: string]: TerraformOutput;
    }>;
    setUserAgent(): Promise<void>;
    abort(): Promise<void>;
}
