import { BaseProject } from './base-project';
import type { BaseProjectResolver } from './base-project-resolver';
export declare abstract class BaseCommandLineFeature<PARAMS extends {} = any, PROJECT extends BaseProject<any, any> = BaseProject, PROJECT_RESOLVER extends BaseProjectResolver<PROJECT> = BaseProjectResolver<PROJECT>> {
    readonly argsWithParams: string;
    protected readonly methodNameToCall: string;
    /**
     * process.cwd()
     */
    protected cwd: string;
    /**
     * params from command line
     */
    protected params: PARAMS;
    protected ins: PROJECT_RESOLVER;
    protected __transformArgsBeforeResolvingParams__(args: string[]): string[];
    /**
     * clean args without params from command line
     */
    args: string[];
    /**
     * first arg from args
     */
    get firstArg(): string;
    /**
     * last arg from args
     */
    get lastArg(): string;
    private __project;
    protected get project(): PROJECT;
    protected set project(v: PROJECT);
    readonly classNameOfMethodToCall: string;
    protected get allParamsAfterFrameworName(): string;
    constructor(argsWithParams: string, methodNameToCall: string, 
    /**
     * nearest project to cwd
     */
    project: PROJECT, 
    /**
     * process.cwd()
     */
    cwd: string, ins: PROJECT_RESOLVER);
    _exit(code?: number): void;
    protected __initialize__(): void;
    _tryResolveChildIfInsideArg(): void;
    /**
     * method called when not using class methods
     */
    abstract _(): any;
}
