import type { McctlConfig, EnvConfig } from '../types/index.js'; /** * Get the package root directory */ export declare function getPackageRoot(): string; /** * Get the CLI package root directory (for templates) */ export declare function getCliPackageRoot(): string; /** * Path resolution utilities */ export declare class Paths { private readonly dataDir; private readonly cliPackageRoot; private readonly _templatesPath; constructor(dataDir?: string); private resolveTemplatesPath; /** User data directory (~/.minecraft-servers) */ get root(): string; /** Platform directory within data */ get platform(): string; /** Templates directory (from CLI package) */ get templates(): string; /** Servers directory */ get servers(): string; /** Worlds directory */ get worlds(): string; /** Shared plugins directory */ get plugins(): string; /** Shared mods directory */ get mods(): string; /** Backups directory */ get backups(): string; /** Services installation directory (.services/) - isolates node_modules from user data */ get services(): string; /** .env file path */ get envFile(): string; /** docker-compose.yml path */ get composeFile(): string; /** Server template directory */ get serverTemplate(): string; /** Config file path */ get configFile(): string; /** Check if platform is initialized */ isInitialized(): boolean; /** Get server directory */ serverDir(name: string): string; /** Get world directory */ worldDir(name: string): string; } /** * The mcctl data root, resolved in one place for every package: * MCCTL_ROOT (made absolute), else ~/minecraft-servers. */ export declare function resolveMcctlRoot(): string; /** * Configuration utilities */ export declare class Config { private readonly paths; constructor(paths?: Paths); /** Load mcctl config */ load(): McctlConfig | null; /** Save mcctl config */ save(config: McctlConfig): void; /** * Return the persistent install id, generating and saving one if absent. * Returns null (and writes nothing) when .mcctl.json is missing, unreadable * or cannot be written, so callers treat that as "telemetry off". */ getOrCreateInstallId(): string | null; /** Load .env file */ loadEnv(): EnvConfig; /** * Update specific keys in .env (other lines kept byte-identical). Values are * quoted so bash `source` reads them literally; the write is atomic. * Throws on a value that cannot be represented safely (see serializeEnvValue). */ updateEnv(updates: Record): Promise; } /** * Whether mcctl-console telemetry may run. Opt-out via `.mcctl.json` * (`"telemetry": false`) or `DO_NOT_TRACK=1|true`; off when there is no config. */ export declare function isTelemetryEnabled(config: McctlConfig | null, env?: Record): boolean; export { formatWorldBytes } from './format.js'; export * from './env-file.js'; export * from './atomic-write.js'; /** * Console output utilities with colors */ export declare const colors: { red: (s: string) => string; green: (s: string) => string; yellow: (s: string) => string; blue: (s: string) => string; cyan: (s: string) => string; bold: (s: string) => string; dim: (s: string) => string; }; export declare const log: { info: (msg: string) => void; warn: (msg: string) => void; error: (msg: string) => void; debug: (msg: string) => void; }; //# sourceMappingURL=index.d.ts.map