import { R3trans, R3transOptions } from "node-r3trans";
import { Registry } from "../../registry";
import { Transport } from "../../transport";
import { TransportBinary, TrmArtifact, TrmPackage } from "../../trmPackage";
import { Manifest, TrmManifest, TrmManifestDependency } from "../../manifest";
import { IActionContext } from "..";
import { DEVCLASS, E071, NAMESPACE, TADIR, TDEVC, TDEVCT } from "../../client";
import { PackageHierarchy } from "../../commons";
export type InstallPackageReplacements = {
    originalDevclass: string;
    installDevclass: string;
};
export type InstallActionInputContextData = {
    systemPackages?: TrmPackage[];
    r3transOptions?: R3transOptions;
    noR3transInfo?: boolean;
    noInquirer?: boolean;
};
export type InstallActionInputInstallData = {
    import?: {
        timeout?: number;
        noLang?: boolean;
        noCust?: boolean;
    };
    checks?: {
        safe?: boolean;
        noSapEntries?: boolean;
        noObjectTypes?: boolean;
        noDependencies?: boolean;
    };
    installDevclass?: {
        keepOriginal?: boolean;
        transportLayer?: string;
        replacements?: InstallPackageReplacements[];
    };
    installTransport?: {
        create?: boolean;
        targetSystem?: string;
    };
};
export interface InstallActionInput {
    contextData?: InstallActionInputContextData;
    packageData: {
        name: string;
        version?: string;
        integrity?: string;
        registry: Registry;
        overwrite?: boolean;
    };
    installData?: InstallActionInputInstallData;
}
type TransportRuntime = {
    binaries?: TransportBinary;
    instance?: Transport;
};
type WorkflowRuntime = {
    registry: Registry;
    update: boolean;
    rollback: boolean;
    remotePackageData: {
        version: string;
        trmPackage: TrmPackage;
        artifact: TrmArtifact;
        manifest: Manifest;
        trmManifest: TrmManifest;
        integrity: string;
    };
    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[];
        transport?: Transport;
    };
    generatedData: {
        devclass: DEVCLASS[];
        namespace: NAMESPACE;
    };
};
export type InstallActionOutput = {
    trmPackage: TrmPackage;
    registry: Registry;
    installTransport?: Transport;
};
export interface InstallWorkflowContext extends IActionContext {
    rawInput: InstallActionInput;
    runtime?: WorkflowRuntime;
    output?: InstallActionOutput;
}
export declare function install(inputData: InstallActionInput): Promise<InstallActionOutput>;
export {};
