import { CoreModels__NS__NpmPublishOptions, CoreModels__NS__ReleaseVersionType } from 'tnp-core/lib-prod';
import { BaseBowerJson } from './base-bower-json';
import { BaseFeatureForProject } from './base-feature-for-project';
import { BaseNodeModules } from './base-node-modules';
import { BasePackageJson } from './base-package-json';
import type { BaseProject } from './base-project';
export declare class BaseNpmHelpers<PROJECT extends BaseProject = BaseProject> extends BaseFeatureForProject<PROJECT> {
    readonly packageJson: BasePackageJson;
    readonly _packageJsonType: typeof BasePackageJson;
    private readonly _packageJsonTypeOriginal;
    readonly nodeModules: BaseNodeModules;
    readonly _nodeModulesType: typeof BaseNodeModules;
    private readonly __nodeModulesTypeOriginal;
    readonly bowerJson: BaseBowerJson;
    constructor(project: PROJECT);
    preferYarnOverNpm(): boolean;
    resetPackageLockJson(): Promise<void>;
    startNpmTask(taskName: string, additionalArguments?: string | object): {
        sync(): string;
        async(detach?: boolean, mockFun?: (stdoutCallback: (dataForStdout: any) => any, stdErrcCallback: (dataForStder: any) => any, shouldProcesBeDead?: () => boolean) => Promise<number> | number): import("child_process").ChildProcess;
        asyncAsPromise(): Promise<void>;
        unitlOutput(optionsOutput: {
            stdoutMsg: string | string[];
            stderMsg?: string | string[];
            timeout?: number;
            stdoutOutputContainsCallback?: () => any;
            outputLineReplace?: (outputLine: string) => string;
        }): Promise<void>;
        unitlOutputContains(stdoutMsg: string | string[], stderMsg?: string | string[], timeout?: number, stdoutOutputContainsCallback?: () => any): Promise<any>;
    };
    /**
     *
     * @param registry without specified registr is checking npm registry
     * @returns
     */
    isLoggedInToRegistry(registry?: string): Promise<boolean>;
    /**
     * Prompt the user to log in to a specific npm registry.
     * @param {string} [registry] - Optional npm registry URL.
     * @returns {Promise<void>} - A promise that resolves when the login process completes.
     */
    loginToRegistry(registry?: string): Promise<void>;
    makeSureLoggedInToNpmRegistry(registry?: string): Promise<void>;
    shouldReleaseMessage(options: {
        releaseVersionBumpType: CoreModels__NS__ReleaseVersionType;
        versionToUse?: string;
        children?: BaseProject[];
        whatToRelease: {
            itself: boolean;
            children: boolean;
        };
        actionType?: 'release' | 'publish' | 'build' | 'init' | 'clear' | 'clear';
        skipQuestionToUser?: boolean;
        messagePrefix?: string;
    }): Promise<boolean>;
    /**
     * @param registry when not specified, it will use the default npm registry
     */
    publishToNpmRegistry(options?: CoreModels__NS__NpmPublishOptions): Promise<void>;
    getPackageVersionFromNpmRegistry(packageName: string, options?: {
        registry?: string;
    }): Promise<string | undefined>;
}
