import { Command } from 'commander';
import { LoadedConfig, Profile } from './configUtil';
export declare function getArg(args: string[], arg: string): string | undefined;
export declare function getArgValue(args: string[], argOpts: string[], defaultIfExists?: string): string | undefined;
/**
 * Preprocesses command line arguments to handle deprecated flags
 * @param args - Raw command line arguments
 * @returns Object containing processed args and deprecation flags
 */
export declare function preprocessArgs(args: string[]): {
    args: string[];
    hadDeprecatedEnv: boolean;
};
/**
 * Resolves environment value from options with proper deprecation warnings
 * @param options - Parsed Commander.js options
 * @param hadDeprecatedEnv - Whether the deprecated -env flag was used
 * @returns Resolved environment string
 */
export declare function resolveEnvironment(options: {
    env?: string;
    environment?: string;
}, hadDeprecatedEnv: boolean): string;
/**
 * Applies argument preprocessing for backward compatibility
 * @param originalArgv - The original process.argv
 */
export declare function applyArgumentPreprocessing(originalArgv: string[]): {
    hadDeprecatedEnv: boolean;
};
/**
 * Adds common CLI options to a Commander.js command
 * @param command - Commander.js command instance
 * @returns The command with common options added
 */
export declare function addCommonOptions(command: Command): Command;
/**
 * Adds path and environment options to a Commander.js command.
 *
 * Note: `--path` is NOT marked required here even though most commands need
 * it, because profile values can supply it. Callers must validate after
 * `resolvePathEnvironmentOptions` that a path was ultimately resolved.
 */
export declare function addPathAndEnvironmentOptions(command: Command): Command;
/**
 * Adds the `--profile` option to any command. Use when a command doesn't use
 * `addPathAndEnvironmentOptions` (for example, init and session).
 */
export declare function addProfileOption(command: Command): Command;
export interface ProfileAwareOptions {
    path?: string;
    environment?: string;
    env?: string;
    profile?: string;
}
export interface ResolvedPathEnv {
    path: string;
    environment: string;
    /** Information about which profile (if any) was used. Useful for logging. */
    profileName?: string;
    /** The loaded config object — handy for callers that need session values. */
    config: LoadedConfig;
}
/**
 * Resolves `--path` and `--environment` using the precedence:
 *   CLI flag > profile value > '' (empty)
 *
 * Deprecated `--env` is still honored; see `resolveEnvironment`.
 *
 * Loads the pcf-helper config from ~/.pcf-helper/config.json and the project
 * working directory. Callers should validate that `path` is non-empty if their
 * command requires it.
 */
export declare function resolvePathAndEnvironment(options: ProfileAwareOptions, hadDeprecatedEnv: boolean): ResolvedPathEnv;
/**
 * Resolves just a profile (without path/env) for commands like init and
 * session where the option surface differs. Returns the profile object (or
 * undefined if no profile was requested/configured) plus the loaded config.
 */
export declare function resolveProfileOnly(profileName?: string): {
    profileName?: string;
    profile?: Profile;
    config: LoadedConfig;
};
