/**
 * ./src/krill/sequence.tsx
 * penguins-eggs v.10.0.0 / ecmascript 2020
 * author: Piero Proietti
 * email: piero.proietti@gmail.com
 * license: MIT
 * https://stackoverflow.com/questions/23876782/how-do-i-split-a-typescript-class-into-multiple-files
 */
/**
 * Ideally, I want to respect calamares way, remplementing the same (SEMPLIFIED) steps for CLI
 *
 *
 *  - partition:     partitions
 *  - mount:         mountFs, mountVfs
 *  - unpackfs:      unpackfs
 *  - _restore:      eggs syncfrom --rootdir /tmp/calamares-krill-root/
 *  - sources-yolk:  execCalamaresModule('sources-yolk')
 *  - machineid:     machineid
 *  - fstab:         fstab
 *  - locale         locale
 *  - keyboard:      keyboard
 *
 * - localecfg:     localecfg
 *  - users:         users
 *  - displaymanager: autologin
 *  - networkcfg:    networkcfg
 *  - hwclock:
 *  - services-systemd:
 *  - bootloader-config: bootloader-config-arch / bootloader-config-debian
 *  - grubcfg:       grubcfg
 *  - bootloader:    bootloaded
 *  - packages:      removeInstaller
 *  - plymouthcfg;
 *  - initramfscfg:  initramfscfg
 *  - initramfs:     initramfs
 *  - removeuser:    removeuser
 *  - sources-yolk-undo: execCalamaresModule('sources-yolk-undo')
 *  - bliss clustom modules
 *  - umount:     umountVfs, this.umountFs
 */
import { IRemix, IDistro, INet } from '../interfaces/index.js';
import Settings from '../classes/settings.js';
import CliAutologin from '../classes/cli-autologin.js';
import { IInstaller, IDevices } from '../interfaces/index.js';
import { ILocation, IKeyboard, IPartitions, IUsers } from '../interfaces/i-krill.js';
import partition from './modules/partition.js';
import { mountFs, umountFs } from './modules/mount-fs.js';
import { mountVfs, umountVfs } from './modules/mount-vfs.js';
import unpackfs from './modules/unpackfs.js';
import machineId from './modules/machine-id.js';
import fstab from './modules/fstab.js';
import locale from './modules/locale.js';
import mKeyboard from './modules/m-keyboard.js';
import localeCfg from './modules/locale-cfg.js';
import addUser from './modules/add-user.js';
import changePassword from './modules/change-password.js';
import networkCfg from './modules/network-cfg.js';
import bootloaderConfig from './modules/bootloader-config.js';
import grubcfg from './modules/grubcfg.js';
import bootloader from './modules/bootloader.js';
import packages from './modules/packages.js';
import removeInstallerLink from './modules/remove-installer-link.js';
import initramfsCfg from './modules/initramfs-cfg.js';
import initramfs from './modules/initramfs.js';
import delLiveUser from './modules/del-live-user.js';
import umount from './modules/umount.js';
import mkfs from './modules/mkfs.js';
import hostname from './modules/hostname.js';
/**
 * hatching: installazione o cova!!!
 */
export default class Sequence {
    partition: typeof partition;
    mountFs: typeof mountFs;
    mountVfs: typeof mountVfs;
    unpackfs: typeof unpackfs;
    machineId: typeof machineId;
    fstab: typeof fstab;
    locale: typeof locale;
    keyboard: typeof mKeyboard;
    localeCfg: typeof localeCfg;
    addUser: typeof addUser;
    changePassword: typeof changePassword;
    networkCfg: typeof networkCfg;
    bootloaderConfig: typeof bootloaderConfig;
    grubcfg: typeof grubcfg;
    bootloader: typeof bootloader;
    packages: typeof packages;
    removeInstallerLink: typeof removeInstallerLink;
    initramfsCfg: typeof initramfsCfg;
    initramfs: typeof initramfs;
    delLiveUser: typeof delLiveUser;
    umountFs: typeof umountFs;
    umountVfs: typeof umountVfs;
    umount: typeof umount;
    mkfs: typeof mkfs;
    hostname: typeof hostname;
    installer: IInstaller;
    installTarget: string;
    verbose: boolean;
    echo: {};
    efi: boolean;
    devices: IDevices;
    users: IUsers;
    network: INet;
    partitions: IPartitions;
    language: string;
    region: string;
    zone: string;
    keyboardModel: string;
    keyboardLayout: string;
    keyboardVariant: string;
    toNull: string;
    spinner: boolean;
    settings: Settings;
    remix: IRemix;
    distro: IDistro;
    luksName: string;
    luksFile: string;
    luksDevice: string;
    luksMountpoint: string;
    is_clone: boolean;
    is_crypted_clone: boolean;
    unattended: boolean;
    nointeractive: boolean;
    chroot: boolean;
    halt: boolean;
    cliAutologin: CliAutologin;
    /**
     * constructor
     */
    constructor(location: ILocation, keyboard: IKeyboard, partitions: IPartitions, users: IUsers, network: INet);
    /**
     * install
     * @param verbose
     * @param umount
     * @returns
     */
    start(domain?: string, unattended?: boolean, nointeractive?: boolean, chroot?: boolean, halt?: boolean, verbose?: boolean): Promise<void>;
    /**
     *
     */
    execCalamaresModule(name: string): Promise<void>;
    /**
     *
    * @param message
    */
    emergencyShell(message: string): Promise<void>;
    /**
     *
     * @param message
     */
    showProblem(message: string, currErr: any): Promise<void>;
}
