import BaseDeployStorageResource from "./BaseDeployStorageResource";
import * as CommonUtilities from "./common-utilities";
import * as IInfrastructure from "./IInfrastructure";
import INamePassword from "./INamePassword";
import IStorageResource from "./IStorageResource";
import MySqlAzure from "./mysql-azure";
import * as Resource from "./resource";
export interface ISqlCreateResult {
    fullyQualifiedDomainName: string;
    name: string;
}
export declare class BaseDeployMySqlAzureInfrastructure implements BaseDeployStorageResource {
    private baseMySqlAzureInfrastructure;
    private readonly environmentVariablesValues;
    constructor(baseMySqlAzureInfrastructure: MySqlAzureInfrastructure, createResult: ISqlCreateResult);
    /**
     * Returns a list name/value pairs for environment
     * variables to describe how to connect to this resource.
     */
    getEnvironmentVariables(): Array<[string, string]>;
    /**
     * Creates a firewall on the storage resource with the given
     * name for the given ipAddress.
     */
    setFirewallRule(nameOfResourceSettingRule: string, ipAddress: string): Promise<this>;
}
export declare class MySqlAzureInfrastructure extends MySqlAzure implements IInfrastructure.IInfrastructure<BaseDeployMySqlAzureInfrastructure>, IStorageResource, INamePassword {
    securityName: string;
    password: string;
    isStorageResource: boolean;
    mySqlAzureFullName: string;
    private readonly promiseGate;
    getBaseName(): string;
    initialize(resource: Resource.Resource | null, targetDirectoryPath: string): this;
    setup(): Promise<void>;
    hydrate(resourcesInEnvironment: Resource.Resource[], deploymentType: Resource.DeployType): Promise<this>;
    deployResource(): Promise<this>;
    getBaseDeployClassInstance(): Promise<BaseDeployMySqlAzureInfrastructure>;
    setUpFirewallForSqlScript(): Promise<string | void>;
    runMySqlScript(pathToScript: string): Promise<CommonUtilities.IExecOutput>;
    setFirewallRule(nameOfResourceSettingRule: string, ipAddress: string): Promise<string>;
    setFirewallAllowAll(): Promise<any>;
    private removeFirewallRule(name);
}
