import { R3trans, R3transOptions } from "node-r3trans";
import { Transport } from "../../transport";
import { TransportBinary, TrmArtifact, TrmPackage, TrmPackageInstallTransport } from "../../trmPackage";
import { TrmManifest, TrmManifestDependency } from "../../manifest";
import { IActionContext } from "..";
import { DEVCLASS, E071, NAMESPACE, TADIR, TDEVC, TDEVCT } from "../../client";
import { PackageHierarchy } from "../../commons";
import { AbstractRegistry } from "../../registry";
import { Package } from "trm-registry-types";
import { Lockfile } from "../../lockfile/Lockfile";
export type InstallPackageReplacements = {
    originalDevclass: string;
    installDevclass: string;
};
export type InstallActionInputContextData = {
    systemPackages?: TrmPackage[];
    r3transOptions?: R3transOptions;
    noR3transInfo?: boolean;
    noInquirer?: boolean;
    noStopWarning?: boolean;
};
export type InstallActionInputInstallData = {
    import?: {
        noLang?: boolean;
        noCust?: boolean;
        replaceExistingTransports?: boolean;
    };
    checks?: {
        lockfile?: Lockfile;
        noSapEntries?: boolean;
        noObjectTypes?: boolean;
        noDependencies?: boolean;
        noExistingObjects?: boolean;
    };
    installDevclass?: {
        keepOriginal?: boolean;
        transportLayer?: string;
        replacements?: InstallPackageReplacements[];
        skipNamespace?: boolean;
    };
    installTransport?: {
        create?: boolean;
        targetSystem?: string;
    };
    skipPostActivities?: boolean;
};
export interface InstallActionInput {
    contextData?: InstallActionInputContextData;
    packageData: {
        name: string;
        version?: string;
        registry: AbstractRegistry;
        overwrite?: boolean;
    };
    installData?: InstallActionInputInstallData;
}
type TransportRuntime = {
    binaries?: TransportBinary;
    instance?: Transport;
};
type WorkflowRuntime = {
    stopWarningShown: boolean;
    registry: AbstractRegistry;
    update: boolean;
    isTrmServerRest: boolean;
    remotePackageData: {
        data: Package;
        manifest: TrmManifest;
        artifact: TrmArtifact;
        contents: boolean;
    };
    packageTransports: {
        devc: TransportRuntime;
        tadir: TransportRuntime;
        lang: TransportRuntime;
        cust: TransportRuntime[];
    };
    packageTransportsData: {
        tdevc: TDEVC[];
        tdevct: TDEVCT[];
        tadir: TADIR[];
        e071: E071[];
    };
    dependenciesToInstall: TrmManifestDependency[];
    r3trans: R3trans;
    originalData: {
        hierarchy: PackageHierarchy;
    };
    installData: {
        namespace: string;
        entries: E071[];
        transports: TrmPackageInstallTransport[];
        upgradingPackage?: TrmPackage;
    };
    generatedData: {
        devclass: DEVCLASS[];
        namespace: NAMESPACE;
        tmsTxtRefresh: Transport[];
    };
};
export type InstallActionOutput = {
    manifest: TrmManifest;
    registry: AbstractRegistry;
    installTransports?: TrmPackageInstallTransport[];
};
export interface InstallWorkflowContext extends IActionContext {
    rawInput: InstallActionInput;
    runtime?: WorkflowRuntime;
    output?: InstallActionOutput;
}
export declare function install(inputData: InstallActionInput): Promise<InstallActionOutput>;
export {};
