/**
 * Path & branding resolution for the shell application.
 *
 * Every user-visible name — the product name, the on-disk config directory, the
 * environment-variable prefix — derives from a single {@link Brand} object, so a
 * rebrand touches exactly one constant. The {@link Locator} interface is the
 * narrow seam the rest of the shell uses to discover *where* things live on
 * disk: the profile directory and the files beneath it. It is an interface
 * (not a concrete class) so tests can hand a fake rooted at a temp directory and
 * the production binding can memoize.
 *
 * This module owns no I/O. {@link NodeLocator} resolves paths against the user's
 * home directory using `node:os` and `node:path` but never touches the
 * filesystem; the upgrade and settings layers do the reading and writing.
 */
/**
 * The single source of truth for every user-visible name.
 *
 * All on-disk locations and environment-variable names derive from these
 * fields, so changing the product's identity is a one-line edit here rather
 * than a hunt through scattered string literals.
 */
export interface Brand {
    /** The product name (e.g. shown in `--version`, process title). */
    readonly name: string;
    /** The dotted directory under the user's home that holds all state. */
    readonly configDir: string;
    /** Prefix for environment variables this app reads (e.g. `INDUSAGI`). */
    readonly envPrefix: string;
}
/** The default brand identity for this build. */
export declare const BRAND: Brand;
/**
 * Resolves the absolute on-disk locations the shell reads and writes.
 *
 * The shape mirrors the layout under the profile directory:
 *
 *   <home>/<brand.configDir>/             ← profileDir()
 *     settings.json                       ← settingsPath()
 *     auth.json                           ← authPath()
 *     sessions/                           ← sessionsDir()
 *     upgrades.json                       ← upgradeMarkerPath()
 *
 * A separate project-scoped settings file lives in the working directory under
 * the same config-dir name; {@link projectSettingsPath} resolves it.
 *
 * Implementations must be pure path computation — no filesystem access — so they
 * are cheap to call repeatedly and trivial to fake in tests.
 */
export interface Locator {
    /** The brand identity these paths derive from. */
    readonly brand: Brand;
    /** The per-user profile directory: `<home>/<configDir>`. */
    profileDir(): string;
    /** The global settings file inside the profile directory. */
    settingsPath(): string;
    /** The project-scoped settings file under `<cwd>/<configDir>`. */
    projectSettingsPath(cwd: string): string;
    /** The credential store inside the profile directory. */
    authPath(): string;
    /** The directory holding persisted sessions. */
    sessionsDir(): string;
    /** The marker file recording which upgrades have already run. */
    upgradeMarkerPath(): string;
}
/**
 * The production {@link Locator}, rooted at the user's home directory.
 *
 * All paths hang off a single `under(...segments)` helper so the layout is
 * declared once. `home` is injectable purely to make the class testable; it
 * defaults to {@link homedir}.
 */
export declare class NodeLocator implements Locator {
    readonly brand: Brand;
    private readonly home;
    constructor(brand?: Brand, home?: string);
    /** Join segments under the profile directory. */
    private under;
    profileDir(): string;
    settingsPath(): string;
    projectSettingsPath(cwd: string): string;
    authPath(): string;
    sessionsDir(): string;
    upgradeMarkerPath(): string;
}
