/**
 * ./src/classes/ovary.ts
 * penguins-eggs v.10.0.0 / ecmascript 2020
 * author: Piero Proietti
 * email: piero.proietti@gmail.com
 * license: MIT
 */
import { IAddons, IExcludes } from '../interfaces/index.js';
import CliAutologin from './cli-autologin.js';
import Incubator from './incubation/incubator.js';
import Settings from './settings.js';
import Users from './users.js';
/**
 * Ovary:
 */
export default class Ovary {
    cliAutologin: CliAutologin;
    clone: boolean;
    compression: string;
    cryptedclone: boolean;
    echo: {};
    familyId: string;
    genisoimage: boolean;
    incubator: Incubator;
    nest: string;
    settings: Settings;
    snapshot_basename: string;
    snapshot_prefix: string;
    theme: string;
    toNull: string;
    verbose: boolean;
    volid: string;
    /**
     * Add or remove exclusion
     * @param add {boolean} true = add, false remove
     * @param exclusion {string} path to add/remove
     */
    addRemoveExclusion(add: boolean, exclusion: string): void;
    /**
     * Esegue il bind del fs live e
     * crea lo script bind
     *
     * @param verbose
     */
    bindLiveFs(): Promise<void>;
    /**
     * bind dei virtual file system
     */
    bindVfs(): Promise<void>;
    /**
     *
     * @param verbose
     */
    cleanUsersAccounts(): Promise<void>;
    /**
     * list degli utenti: grep -E 1[0-9]{3}  /etc/passwd | sed s/:/\ / | awk '{print $1}'
     * create la home per user_opt
     * @param verbose
     */
    createUserLive(): Promise<void>;
    /**
     *
     */
    createXdgAutostart(theme: string | undefined, myAddons: IAddons, myLinks?: string[], noicons?: boolean): Promise<void>;
    /**
     * editLiveFs
     * - Truncate logs, remove archived log
     * - Allow all fixed drives to be mounted with pmount
     * - Enable or disable password login trhough ssh for users (not root)
     * - Create an empty /etc/fstab
     * - Blanck /etc/machine-id
     * - Add some basic files to /dev
     * - Clear configs from /etc/network/interfaces, wicd and NetworkManager and netman
     */
    editLiveFs(clone?: boolean, cryptedclone?: boolean): Promise<void>;
    /**
     * @returns {boolean} success
     */
    fertilization(snapshot_prefix?: string, snapshot_basename?: string, theme?: string, compression?: string, nointeratctive?: boolean): Promise<boolean>;
    /**
     * finished = show the results
     * @param scriptOnly
     */
    finished(scriptOnly?: boolean): void;
    /**
     * mkinitfs()
     */
    initrdAlpine(): Promise<void>;
    /**
     * mkinitcpio()
     */
    initrdArch(): Promise<void>;
    /**
     * mkinitramfs() Debian
     */
    initrdDebian(verbose?: boolean): Promise<void>;
    /**
     * dracut() Fedora/Openmamba/Opensuse/Voidlinux
     */
    initrdDracut(): Promise<void>;
    /**
     * syslinux: da syspath
     */
    syslinux(theme?: string): Promise<void>;
    /**
     * kernelCopy
     */
    kernelCopy(): Promise<void>;
    /**
     * Crea la struttura della workdir
     */
    liveCreateStructure(): Promise<void>;
    /**
     * makeDotDisk
     */
    makeDotDisk(info?: string, mksquashfs?: string, mkisofs?: string): void;
    /**
     * makeEFI
     */
    makeEfi(theme?: string): Promise<void>;
    /**
     * makeIso
     * cmd: cmd 4 xorriso
     */
    makeIso(cmd: string, scriptOnly?: boolean): Promise<void>;
    /**
     * squashFs: crea in live filesystem.squashfs
     */
    makeSquashfs(scriptOnly?: boolean, unsecure?: boolean): Promise<string>;
    /**
     * Ritorna true se c'è bisogno del mount --bind
     *
     * Ci sono tre tipologie:
     *
     * - normal solo la creazione della directory, nessun mount
     * - merged creazione della directory e mount ro
     * - mergedAndOverlay creazione directory, overlay e mount rw
     * - copied: creazione directory e copia
     */
    merged(dir: string): boolean;
    /**
     * Restituisce true per le direcory da montare con overlay
     *
     * Ci sono tre tipologie:
     *
     * - normal solo la creazione della directory, nessun mount
     * - merged creazione della directory e mount ro
     * - mergedAndOverlay creazione directory, overlay e mount rw
     *
     * @param dir
     */
    mergedAndOverlay(dir: string): boolean;
    /**
     * produce
     * @param clone
     * @param cryptedclone
     * @param scriptOnly
     * @param yolkRenew
     * @param release
     * @param myAddons
     * @param nointeractive
     * @param noicons
     * @param unsecure
     * @param verbose
     */
    produce(clone: boolean | undefined, cryptedclone: boolean | undefined, scriptOnly: boolean | undefined, yolkRenew: boolean | undefined, release: boolean | undefined, myAddons: IAddons, myLinks: string[], excludes: IExcludes, nointeractive?: boolean, noicons?: boolean, unsecure?: boolean, verbose?: boolean): Promise<void>;
    /**
     *
     * @param cmd
     */
    tryCatch(cmd?: string): Promise<void>;
    /**
     * ubind del fs live
     * @param verbose
     */
    uBindLiveFs(): Promise<void>;
    /**
     *
     * @param verbose
     */
    ubindVfs(): Promise<void>;
    /**
     * fill
     */
    usersFill(): Promise<Users[]>;
    /**
     *
     * @param cryptedclone
     * @returns cmd 4 mkiso
     */
    xorrisoCommand(clone?: boolean, cryptedclone?: boolean): Promise<string>;
    /**
     * Creazione link desktop per lxde
     * @param name
     * @param icon
     */
    private lxdeLink;
}
