/// <reference types="node" />
import * as child from 'child_process';
import { AwsCloudProvider, CloudProvider, GcpCloudProvider, Config } from '@api3/airnode-node';
export declare const TF_STATE_FILENAME = "default.tfstate";
export declare type DeployAirnodeOutput = {
    httpGatewayUrl?: string;
    httpSignedDataGatewayUrl?: string;
};
interface CommandOptions extends child.ExecOptions {
    ignoreError?: boolean;
}
export declare function runCommand(command: string, options: CommandOptions): Promise<string>;
export declare type CommandArg = string | [string, string] | [string, string, string];
export declare function execTerraform(execOptions: CommandOptions, command: string, args: CommandArg[], options?: string[]): Promise<string>;
export declare function awsApplyDestroyArguments(cloudProvider: AwsCloudProvider, _bucket: string, _path: string): CommandArg[];
export declare function gcpApplyDestroyArguments(cloudProvider: GcpCloudProvider, bucket: string, path: string): CommandArg[];
export declare function awsAirnodeInitArguments(cloudProvider: AwsCloudProvider, bucket: string, path: string): CommandArg[];
export declare function gcpAirnodeInitArguments(_cloudProvider: GcpCloudProvider, bucket: string, path: string): CommandArg[];
export declare function awsAirnodeImportOptions(_cloudProvider: AwsCloudProvider): string[];
export declare function gcpAirnodeImportOptions(cloudProvider: GcpCloudProvider): string[];
export declare const cloudProviderAirnodeApplyDestoryArguments: {
    aws: typeof awsApplyDestroyArguments;
    gcp: typeof gcpApplyDestroyArguments;
};
export declare const cloudProviderAirnodeInitArguments: {
    aws: typeof awsAirnodeInitArguments;
    gcp: typeof gcpAirnodeInitArguments;
};
export declare const cloudProviderAirnodeImportOptions: {
    aws: typeof awsAirnodeImportOptions;
    gcp: typeof gcpAirnodeImportOptions;
};
export declare function prepareAirnodeInitArguments(cloudProvider: CloudProvider, bucket: string, path: string, commonArguments: CommandArg[]): CommandArg[];
export declare function prepareCloudProviderAirnodeApplyDestoryArguments(cloudProvider: CloudProvider, bucket: string, path: string, commonArguments: CommandArg[]): CommandArg[];
export declare type AirnodeApplyDestroyVariables = {
    airnodeAddressShort: string;
    stage: string;
    configPath?: string;
    secretsPath?: string;
    handlerDir: string;
    disableConcurrencyReservations: boolean;
    airnodeWalletPrivateKey?: string;
};
export declare function prepareAirnodeApplyDestroyArguments(variables: AirnodeApplyDestroyVariables): CommandArg[];
export declare function terraformAirnodeInit(execOptions: child.ExecOptions, cloudProvider: CloudProvider, bucket: string, bucketPath: string): Promise<void>;
export declare function terraformAirnodeApply(execOptions: child.ExecOptions, config: Config, bucket: string, bucketPath: string, configPath: string, secretsPath: string): Promise<void>;
export declare function transformTerraformOutput(terraformOutput: string): DeployAirnodeOutput;
export declare const deployAirnode: (config: Config, configPath: string, secretsPath: string) => Promise<DeployAirnodeOutput>;
export declare function terraformAirnodeDestroy(execOptions: child.ExecOptions, cloudProvider: CloudProvider, airnodeAddressShort: string, stage: string, bucket: string, bucketPath: string): Promise<void>;
export declare function removeAirnode(airnodeAddress: string, stage: string, cloudProvider: CloudProvider): Promise<void>;
export {};
//# sourceMappingURL=index.d.ts.map