/**
 * local preview server 관련 경로 계산을 담당하는 파일이다.
 * generated 산출물, 설정 파일, 로그 파일 위치를 작업 디렉터리 기준으로 일관되게 만든다.
 */
import type { StoragePaths } from '../../../../platform/core/types';
export declare const DEFAULT_LOCAL_SERVER_PORT = 4173;
export declare const LOCAL_SERVER_HOST = "127.0.0.1";
export declare const LOCAL_SERVER_HEALTH_PATH = "/index.json";
export declare const LOCAL_SERVER_PORT_SEARCH_WINDOW = 20;
export declare const LOCAL_SERVER_START_TIMEOUT_MS = 30000;
export declare const LOCAL_SERVER_STOP_TIMEOUT_MS = 5000;
export declare const LOCAL_SERVER_LOCK_STALE_MS = 120000;
export declare const LOCAL_SERVER_STATE_VERSION = 2;
export declare const LOCAL_SERVER_SASS_VERSION = "^1.86.3";
export declare const LOCAL_SERVER_REACT_QUERY_VERSION = "^5.81.2";
export declare const LOCAL_SERVER_TYPES_NODE_VERSION = "^25.0.10";
export declare const LOCAL_SERVER_TYPES_REACT_VERSION = "19.1.0";
export declare const LOCAL_SERVER_TYPES_REACT_DOM_VERSION = "19.1.1";
export declare const LOCAL_SERVER_TYPESCRIPT_VERSION = "5.8.2";
export declare const LOCAL_SERVER_VITE_VERSION = "^6.3.1";
export declare const STORYBOOK_VERSION = "8.6.14";
export declare const LOCAL_SERVER_LEGACY_FILE_NAMES: readonly ["server.mjs"];
export declare const LOCAL_SERVER_STYLE_EXPORT_FILE_PATTERN: RegExp;
export declare const REQUIRED_LOCAL_SERVER_PUBLISHED_PACKAGE_NAMES: readonly ["sales-frontend-api", "sales-frontend-assets", "sales-frontend-bridge", "sales-frontend-components", "sales-frontend-design-system", "sales-frontend-hooks", "sales-frontend-solution", "sales-frontend-stores", "sales-frontend-typescript-config"];
export declare const IMPORT_SPECIFIER_PATTERN: RegExp;
export declare const SOURCE_FILE_EXTENSION_PATTERN: RegExp;
declare const WORKSPACE_PACKAGE_GROUP_NAMES: readonly ["apps", "packages", "configs"];
declare const WORKSPACE_ROOT_MARKER_FILE_NAMES: readonly ["pnpm-workspace.yaml", "pnpm-workspace.yml"];
export declare const LOCAL_SERVER_RUNTIME_PACKAGE_NAMES: readonly ["react", "react-dom", "@tanstack/react-query"];
export declare const PACKAGE_MANIFEST_DEPENDENCY_FIELDS: readonly ["dependencies", "devDependencies", "optionalDependencies", "peerDependencies"];
export declare const NODE_BUILTIN_MODULE_NAMES: Set<string>;
export declare const LOCAL_SERVER_DEFAULT_PACKAGE_JSON: {
    readonly dependencies: {
        readonly '@types/node': "^25.0.10";
        readonly '@types/react': "19.1.0";
        readonly '@types/react-dom': "19.1.1";
        readonly '@tanstack/react-query': "^5.81.2";
        readonly '@storybook/addon-essentials': "8.6.14";
        readonly '@storybook/react': "8.6.14";
        readonly '@storybook/react-vite': "8.6.14";
        readonly react: "^19.1.0";
        readonly 'react-dom': "^19.1.0";
        readonly sass: "^1.86.3";
        readonly storybook: "8.6.14";
        readonly typescript: "5.8.2";
        readonly vite: "^6.3.1";
    };
    readonly name: "ju-hong-e-local-server";
    readonly private: true;
    readonly scripts: {
        readonly dev: "storybook dev -c ./.storybook";
        readonly start: "storybook dev -c ./.storybook";
    };
    readonly type: "commonjs";
};
/**
 * Json Record 기록 구조다.
 * hover 정보만으로도 용도와 필드 의미를 파악할 수 있도록 이 선언을 유지한다.
 */
export type JsonRecord = Record<string, unknown>;
/**
 * Local Server Package Json 관련 타입이다.
 * hover 정보만으로도 용도와 필드 의미를 파악할 수 있도록 이 선언을 유지한다.
 */
export type LocalServerPackageJson = JsonRecord & {
    /**
     * dependencies 값
     */
    dependencies?: Record<string, string>;
    /**
     * name 값
     */
    name?: string;
    /**
     * private 값
     */
    private?: boolean;
    /**
     * scripts 값
     */
    scripts?: Record<string, string>;
    /**
     * type 값
     */
    type?: string;
};
/**
 * Preview Target Config 설정 구조다.
 * hover 정보만으로도 용도와 필드 의미를 파악할 수 있도록 이 선언을 유지한다.
 */
export type PreviewTargetConfig = {
    /**
     * directories 값
     */
    directories?: string[];
};
/**
 * Local Server State 상태 구조다.
 * hover 정보만으로도 용도와 필드 의미를 파악할 수 있도록 이 선언을 유지한다.
 */
export type LocalServerState = {
    /**
     * dirty 값
     */
    dirty?: boolean;
    /**
     * health 값
     */
    health?: 'running' | 'stopped' | 'stale' | 'unknown';
    /**
     * last Refresh At 값
     */
    lastRefreshAt?: string;
    /**
     * last Refresh Reason 값
     */
    lastRefreshReason?: string;
    /**
     * pid 값
     */
    pid?: number;
    /**
     * port 값
     */
    port?: number;
    /**
     * started At 값
     */
    startedAt?: string;
    /**
     * restart Required 값
     */
    restartRequired?: boolean;
    /**
     * state schema version 값
     */
    version?: number;
};
/**
 * Local Server Listening Process 관련 타입이다.
 * hover 정보만으로도 용도와 필드 의미를 파악할 수 있도록 이 선언을 유지한다.
 */
export type LocalServerListeningProcess = {
    /**
     * pid 값
     */
    pid: number;
    /**
     * port 값
     */
    port: number;
};
/**
 * Storybook Index Entry 관련 타입이다.
 * hover 정보만으로도 용도와 필드 의미를 파악할 수 있도록 이 선언을 유지한다.
 */
export type StorybookIndexEntry = {
    /**
     * id 값
     */
    id?: string;
    /**
     * import Path 값
     */
    importPath?: string;
    /**
     * name 값
     */
    name?: string;
    /**
     * history나 report에 기록할 제목
     */
    title?: string;
    /**
     * type 값
     */
    type?: string;
};
/**
 * Storybook Index 관련 타입이다.
 * hover 정보만으로도 용도와 필드 의미를 파악할 수 있도록 이 선언을 유지한다.
 */
export type StorybookIndex = {
    /**
     * entries 값
     */
    entries?: Record<string, StorybookIndexEntry>;
};
/**
 * Local Server Paths 관련 타입이다.
 * hover 정보만으로도 용도와 필드 의미를 파악할 수 있도록 이 선언을 유지한다.
 */
export type LocalServerPaths = {
    /**
     * directory Path 값
     */
    directoryPath: string;
    /**
     * generated Directory Path 값
     */
    generatedDirectoryPath: string;
    /**
     * generated output registry Path 값
     */
    generatedRegistryPath: string;
    /**
     * gen-html-multiple UI와 상태 파일을 저장하는 디렉터리 경로
     */
    multipleDirectoryPath: string;
    /**
     * log Path 값
     */
    logPath: string;
    /**
     * package Json Path 값
     */
    packageJsonPath: string;
    /**
     * 사용자 커스텀 의존성/속성 정의 파일(package-custom.json) 경로
     */
    packageCustomJsonPath: string;
    /**
     * preview Target Path 값
     */
    previewTargetPath: string;
    /**
     * refresh Lock Path 값
     */
    refreshLockPath: string;
    /**
     * scss Module Declaration Path 값
     */
    scssModuleDeclarationPath: string;
    /**
     * server Lock Path 값
     */
    serverLockPath: string;
    /**
     * state Path 값
     */
    statePath: string;
    /**
     * storybook Config Directory Path 값
     */
    storybookConfigDirectoryPath: string;
    /**
     * storybook Main Config Path 값
     */
    storybookMainConfigPath: string;
    /**
     * Storybook 매니저 엔트리(manager.tsx) 경로 — 리터치 패널 등록용
     */
    storybookManagerConfigPath: string;
    /**
     * storybook Preview Config Path 값
     */
    storybookPreviewConfigPath: string;
    /**
     * tsconfig Path 값
     */
    tsconfigPath: string;
};
/**
 * Local Server Setup Info 관련 타입이다.
 * hover 정보만으로도 용도와 필드 의미를 파악할 수 있도록 이 선언을 유지한다.
 */
export type LocalServerSetupInfo = {
    /**
     * dependencies 값
     */
    dependencies: Record<string, string>;
    /**
     * package.json 변경 여부
     */
    packageJsonChanged?: boolean;
    /**
     * package Json Path 값
     */
    packageJsonPath: string;
    /**
     * Storybook main/preview 설정 파일 변경 여부
     */
    storybookConfigChanged?: boolean;
};
/**
 * Local Server Runtime Info 관련 타입이다.
 * hover 정보만으로도 용도와 필드 의미를 파악할 수 있도록 이 선언을 유지한다.
 */
export type LocalServerRuntimeInfo = {
    /**
     * already Running 값
     */
    alreadyRunning: boolean;
    /**
     * local server가 노출하는 기본 URL
     */
    baseUrl: string;
    /**
     * log Path 값
     */
    logPath: string;
    /**
     * port 값
     */
    port: number;
    /**
     * 테스트 모드 등으로 실제 실행이 생략됐는지 여부
     */
    skipped: boolean;
};
export { WORKSPACE_PACKAGE_GROUP_NAMES, WORKSPACE_ROOT_MARKER_FILE_NAMES };
/**
 * @description
 * `.ju-hong-e/local-server` 아래에서 사용하는 설정 파일과 로그 파일 경로를 정리한다.
 * @param paths 저장소 경로 정보
 * @returns 로컬 Storybook 실행 경로 집합
 */
export declare function getLocalServerPaths(paths: StoragePaths): LocalServerPaths;
/**
 * @description
 * JSON object 형태인지 판별한다.
 * @param value 검사 대상 값
 * @returns plain object 여부
 */
export declare function isRecord(value: unknown): value is JsonRecord;
/**
 * @description
 * JSON 파일을 읽어 파싱한다.
 * @param filePath 대상 파일 경로
 * @returns 파싱 결과 또는 undefined
 */
export declare function readJsonFile<T>(filePath: string): T | undefined;
/**
 * @description
 * 값을 보기 쉬운 JSON 파일로 저장한다.
 * @param filePath 대상 파일 경로
 * @param value 저장할 값
 */
export declare function writeJsonFile(filePath: string, value: unknown): void;
/**
 * @description
 * 서버 상태 파일을 읽는다.
 * @param paths 저장소 경로 정보
 * @returns 저장된 서버 상태
 */
export declare function readLocalServerState(paths: StoragePaths): LocalServerState;
/**
 * @description
 * 서버 상태를 파일에 기록한다.
 * @param paths 저장소 경로 정보
 * @param state 저장할 상태
 */
export declare function writeLocalServerState(paths: StoragePaths, state: LocalServerState): void;
/**
 * @description
 * 기존 서버 상태를 유지하면서 일부 필드만 갱신한다.
 * @param paths 저장소 경로 정보
 * @param patch 덮어쓸 서버 상태 조각
 * @returns 갱신된 서버 상태
 */
export declare function updateLocalServerState(paths: StoragePaths, patch: LocalServerState): {
    version: number;
    dirty?: boolean;
    health?: "running" | "stopped" | "stale" | "unknown";
    lastRefreshAt?: string;
    lastRefreshReason?: string;
    pid?: number;
    port?: number;
    startedAt?: string;
    restartRequired?: boolean;
};
/**
 * @description
 * 서버 상태 파일을 삭제한다.
 * @param paths 저장소 경로 정보
 */
export declare function removeLocalServerState(paths: StoragePaths): void;
//# sourceMappingURL=paths.d.ts.map