/// <reference types="node" />
import * as child from 'child_process';
import { AwsCloudProvider, CloudProvider, GcpCloudProvider, Config } from '@api3/airnode-node';
import { Bucket } from '../utils/infrastructure';
export declare const TF_STATE_FILENAME = "default.tfstate";
export type DeployAirnodeOutput = {
    httpGatewayUrl?: string;
    httpSignedDataGatewayUrl?: string;
    oevGatewayUrl?: string;
};
interface CommandOptions extends child.ExecOptions {
    ignoreError?: boolean;
}
export declare function runCommand(command: string, options: CommandOptions): Promise<string>;
export 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: Bucket, _bucketDeploymentPath: string): CommandArg[];
export declare function gcpApplyDestroyArguments(cloudProvider: GcpCloudProvider, bucket: Bucket, bucketDeploymentPath: string): CommandArg[];
export declare function awsAirnodeInitArguments(bucket: Bucket, bucketDeploymentPath: string): CommandArg[];
export declare function gcpAirnodeInitArguments(bucket: Bucket, bucketDeploymentPath: 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: Bucket, bucketDeploymentPath: string, commonArguments: CommandArg[]): CommandArg[];
export declare function prepareCloudProviderAirnodeApplyDestoryArguments(cloudProvider: CloudProvider, bucket: Bucket, bucketDeploymentPath: string, commonArguments: CommandArg[]): CommandArg[];
export type AirnodeApplyDestroyVariables = {
    deploymentId: 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: Bucket, bucketDeploymentPath: string): Promise<void>;
export declare function terraformAirnodeApply(execOptions: child.ExecOptions, config: Config, bucket: Bucket, bucketDeploymentPath: string, configPath: string, secretsPath: string): Promise<void>;
export declare function transformTerraformOutput(terraformOutput: string): DeployAirnodeOutput;
export declare const deployAirnode: (config: Config, configPath: string, secretsPath: string, timestamp: number) => Promise<DeployAirnodeOutput>;
export declare function terraformAirnodeDestroy(execOptions: child.ExecOptions, cloudProvider: CloudProvider, deploymentId: string, bucket: Bucket, bucketDeploymentPath: string): Promise<void>;
export type DeploymentVersion = {
    id: string;
    timestamp: string;
};
export type Deployment = {
    id: string;
    cloudProvider: CloudProvider;
    airnodeAddress: string;
    stage: string;
    airnodeVersion: string;
    lastUpdate: string;
    versions: DeploymentVersion[];
    bucket: Bucket;
    bucketLatestDeploymentPath: string;
};
export declare function removeAirnode(deploymentId: string): Promise<void>;
export declare function listAirnodes(cloudProviders: readonly CloudProvider['type'][]): Promise<void>;
export declare function deploymentInfo(deploymentId: string): Promise<void>;
export declare function fetchFiles(deploymentId: string, outputDir: string, versionId?: string): Promise<void>;
export declare function saveDeploymentFiles(deploymentId: string, versionId: string, configPath: string, secretsPath: string): Promise<void>;
export {};
//# sourceMappingURL=index.d.ts.map