import { NodeSSH } from 'node-ssh'; import { DeepPartial } from 'utility-types'; export type dynamicArgs = { [key: string]: any; }; export type deployFunction = (deployConfig: DeployConfig, environmentConfig: EnvironmentConfig, serverConfig: ServersConfig, dynamicArgs: dynamicArgs, ssh: NodeSSH) => Promise; export type healthCheckFunction = (ssh: NodeSSH, port: number) => Promise; export type setupDynamicArgsFunction = (deployConfig: DeployConfig, environmentConfig: EnvironmentConfig, serverConfig: ServersConfig, dynamicArgs: dynamicArgs, ssh: NodeSSH) => Promise; export type deployAction = 'default' | 'stop' | 'revert'; export type createTagFunction = (isSemverTag: boolean, isVersionedTag: boolean, releaseNumber: number, semverVersion: string | undefined, environmentName: string, branch: string | undefined) => string; export type parseTagFunction = (isSemverTag: boolean, isVersionedTag: boolean, allTags: string[], environmentName: string, branch: string | undefined) => { semverVersion: string | undefined; releaseNumber: number | undefined; }; export type createBaseConfigFunction = (buildTemplate: Json, deployTemplate: Json, stopTemplate: Json, stages: Json, revertTemplate?: Json) => Json; export type JsonPrimitive = string | number | boolean | null | undefined; export type JsonMap = { [key: string]: JsonPrimitive | JsonArray | JsonMap; }; export type JsonArray = (JsonPrimitive | JsonArray | JsonMap)[]; export type Json = JsonPrimitive | JsonMap | JsonArray; export declare class SshConfig { host: string; username: string; privateKey: string; } export declare class UploadConfig { files: string[]; folders: string[]; uploadTo: string; } export declare class ServersConfig { getPort?: (deployConfig: DeployConfig, environmentConfig: EnvironmentConfig, serverConfig: ServersConfig, dynamicArgs: dynamicArgs, ssh: NodeSSH) => Promise; getAppName: (deployConfig: DeployConfig, environmentConfig: EnvironmentConfig, serverConfig: ServersConfig, dynamicArgs: dynamicArgs, ssh: NodeSSH) => Promise; sshConfig: SshConfig; } export declare class EnvironmentConfig { environmentName: string; environmentTagCreate: createTagFunction; environmentTagParseVersion: parseTagFunction; environmentTagIsSemver: boolean; environmentTagIsVersioned: boolean; deployManual: boolean; defaultEnvironmentBranch?: string; isMultiEnv: boolean; revertible?: boolean; envVars?: { [key: string]: string; }; uploadConfig: UploadConfig; setupDynamicArgs?: setupDynamicArgsFunction; deployBefore?: deployFunction; deployUpload?: deployFunction; deployStart?: deployFunction; deployAfter?: deployFunction; onStop?: deployFunction; onRevert?: deployFunction; healthCheck?: healthCheckFunction; servers: ServersConfig[]; auto_stop_in?: string; } export declare class DeployConfig { environments: EnvironmentConfig[]; setupDynamicArgs?: setupDynamicArgsFunction; requiredEnvVars: string[]; deployBefore?: deployFunction; deployUpload: deployFunction; deployStart: deployFunction; deployAfter?: deployFunction; healthCheck: healthCheckFunction; onStop: deployFunction; onRevert: deployFunction; createBaseConfig?: createBaseConfigFunction; } export declare class CiScripts { before: string[]; main: string[]; after: string[]; } export declare class CiConfig { deploy: CiScripts; build: CiScripts; stop: CiScripts; revert: CiScripts; } export type CiStage = keyof CiConfig; export type CiPhase = keyof CiScripts; export type PartialCiConfig = DeepPartial; export type PartialDeployConfig = DeepPartial; export declare const ciConfig: CiConfig; export declare const deployConfig: DeployConfig;