import { ChildProcess, StdioOptions } from 'node:child_process';
import { BaseProject } from './base/classes/base-project';
export declare const UtilsNpm__NS__isProperVersion: (npmVersion: string) => boolean;
export declare const UtilsNpm__NS__isSpecialVersion: (version: string) => boolean;
export declare const UtilsNpm__NS__clearVersion: (version: string, options: {
    removePrefixes?: boolean;
    /**
     * Remove alpha, beta, rc, latest, next etc.
     */
    removeSuffix?: boolean;
}) => string;
export declare const UtilsNpm__NS__fixMajorVerNumber: (version: string) => string;
type LatestType = 'major' | 'minor' | 'patch' | {
    majorUpTo?: number;
    minorUpTo?: number;
};
export declare const UtilsNpm__NS__getLatestVersionFromNpm: (packageName: string, options?: {
    currentPackageVersion?: string;
    latestType?: LatestType;
    skipAlphaBetaNext?: boolean;
}) => Promise<string>;
export declare const UtilsNpm__NS__checkIfPackageVersionAvailable: (pkgName: string, pkgVersion: string) => Promise<boolean>;
export declare const UtilsNpm__NS__getLastMajorVersions: (pkgName: string) => Promise<string[]>;
export declare const UtilsNpm__NS__getLastMinorVersionsForMajor: (majorVer: number, pkgName: string) => Promise<string[]>;
export interface UtilsNpm__NS__VersionObjectNpm {
    major: number;
    minor: number;
    patch: number;
}
export declare const UtilsNpm__NS__getVerObj: (version: string) => UtilsNpm__NS__VersionObjectNpm;
/**
 * @deprecated TODO remvoe
 */
export declare const UtilsNpm__NS__getLastVersions: (pkgName: string, currentVerObj: UtilsNpm__NS__VersionObjectNpm, latestVerObj: UtilsNpm__NS__VersionObjectNpm) => Promise<string[]>;
export declare const UtilsHttp__NS__startHttpServer: (cwd: string, port: number, options?: {
    startMessage?: string;
}) => Promise<void>;
/**
 * extract assets pathes from .md file
 */
export declare const UtilsMd__NS__getAssets: (mdfileContent: string) => string[];
export declare const UtilsMd__NS__getAssetsFromFile: (absPathToFile: string) => string[];
/**
 * Extract links to other Markdown files from a given Markdown content.
 * @param mdfileContent
 */
export declare const UtilsMd__NS__getLinksToOtherMdFiles: (mdfileContent: string) => string[];
export declare const UtilsMd__NS__moveAssetsPathsToLevelFromFile: (absFilePath: string, level?: number) => string | undefined;
/**
 * Move asset paths to a higher directory level by adding "../" before each path.
 *
 * @param mdfileContent - The content of the .md file.
 * @param level - The number of levels to go up (default is 1).
 * @returns The modified content with updated asset paths.
 */
export declare const UtilsMd__NS__moveAssetsPathsToLevel: (mdfileContent: string, level?: number) => string;
/**
 *
 * @param node_modules/sql.js/dist/sql-wasm.js
 */
export declare const UtilsQuickFixes__NS__replaceKnownFaultyCode: (contentofSQLWasmJS: string) => string;
/**
 * for some reason electron is being bundled - and it is not needed for cli
 */
export declare const UtilsQuickFixes__NS__replaceElectronWithNothing: (jsContent: string, packageName: string) => string;
export declare const UtilsZipBrowser__NS__zipDirBrowser: (fileList: FileList) => Promise<Blob>;
export declare const UtilsZipBrowser__NS__unzipArchiveBrowser: (zipBlob: Blob) => Promise<Map<string, Blob>>;
export declare const UtilsZip__NS__splitFile7Zip: (inputPath: string, partSizeMB?: number) => Promise<number>;
/**
 * Splits a file into smaller parts if its size exceeds the specified part size.
 * @returns true if file was split, false if not needed
 */
export declare const UtilsZip__NS__splitFile: (inputPath: string, partSizeMB?: number) => Promise<number>;
/**
 * @returns absolute path to zip file
 */
export declare const UtilsZip__NS__zipDir: (absPathToDir: string, options?: {
    /**
     * default false
     */
    overrideIfZipFileExists?: boolean;
}) => Promise<string>;
export declare const UtilsZip__NS__unzipArchive: (absPathToZip: string) => Promise<void>;
export declare const UtilsTaonWorker__NS__getUniqueForTask: (task: string, location: string | string[]) => string;
export declare const UtilsJava__NS__selectJdkVersion: () => Promise<string | undefined>;
export declare const UtilsJava__NS__detectJavaVersionMacOS: (javaHome: string) => string;
export declare const UtilsJava__NS__updateJavaHomePath: (selectedPath: string) => void;
export declare const UtilsJava__NS__selectTomcatVersion: () => Promise<string>;
export declare const UtilsJava__NS__updateTomcatHomePath: (selectedPath: string) => void;
export declare const UtilsPasswords__NS__hashPassword: (password: string) => Promise<string>;
export declare const UtilsPasswords__NS__verifyPassword: (password: string, stored: string) => Promise<boolean>;
export declare const UtilsDocker__NS__DOCKER_LABEL_KEY = "com.docker.compose.project";
export declare const UtilsDocker__NS__DOCKER_TAON_PROJECT_LABEL = "com.docker.compose.taon.project=true";
export declare const UtilsDocker__NS__cleanImagesAndContainersByDockerLabel: (labelKey: string, labelValue: string) => Promise<void>;
export interface UtilsDocker__NS__DockerComposeActionOptions {
    composeFileName?: string;
    cwd?: string;
    env?: NodeJS.ProcessEnv;
    skipBuild?: boolean;
    stdio?: StdioOptions;
    useFirstYmlFound?: boolean;
}
export type UtilsDocker__NS__DockerComposeActionType = 'up' | 'down';
/**
 * @returns cmd + args array
 * you can use with child_process.spawn
 * const [cmd, ...args] = getDockerComposeActionCommand('up');
 * child.spawn(cmd, args, { ... });
 *
 * @param action 'up' | 'down'
 */
export declare const UtilsDocker__NS__getDockerComposeActionCommand: (action: UtilsDocker__NS__DockerComposeActionType, options?: Omit<UtilsDocker__NS__DockerComposeActionOptions, "cwd" | "env" | "stdio" | "useFirstYmlFound">) => string[];
export declare const UtilsDocker__NS__getDockerComposeActionChildProcess: (action: UtilsDocker__NS__DockerComposeActionType, options?: UtilsDocker__NS__DockerComposeActionOptions) => ChildProcess;
export declare const UtilsDocker__NS__removeAllTaonContainersAndImagesFromDocker: () => Promise<void>;
/**
 * @TODO @REFACTOR use async stuff
 */
export declare const UtilsDocker__NS__linkPodmanAsDockerIfNecessary: () => Promise<void>;
interface FoldersSyncOptions {
    androidFolder: string;
    macPhotosLibrary: string;
    tempConvertFolder: string;
    /**
     * If true, skips the terminal menu confirmation on startup
     * (default: false) - perfect for automated scripts
     */
    skipTerminalMenu?: boolean;
    /**
     * for testing purposes only
     */
    onlyProcessFiles?: string[];
}
export declare const UtilsFileSync__NS__forFolders: (folder: FoldersSyncOptions) => Promise<void>;
export declare const UtilsClipboard__NS__copyText: (textToCopy: string) => Promise<void>;
export declare const UtilsClipboard__NS__pasteText: () => Promise<string>;
export declare const UtilsLineCount__NS__forPorject: (project: BaseProject, opt: {
    extensionsOnly?: string[];
    displayInfoChildren?: boolean;
    displayInfoAll?: boolean;
    /**
     * by default src, libraries, projects
     */
    searchFolders?: string[];
}) => {};
export {};
