/** 설정 파일 경로. `CROSSPANE_CONFIG_DIR`로 옮길 수 있다 (테스트·CI용) */ export declare function configPath(): string; export interface HubConfig { /** 쓰기 전용 인제스트 키 — 공개를 전제로 한 값이다 */ ingestKey?: string; /** 마지막으로 쓴 `--public-url` — 고정 터널 주소를 매번 타이핑하지 않기 위해 기억한다 */ publicUrl?: string; } /** 깨진 파일로 허브 기동을 막지 않는다 — 값이 없는 것으로 보고 새로 만든다 */ export declare function parseConfig(text: string): HubConfig; /** * 값을 하나 저장한다 (파일의 다른 필드는 보존). 저장 실패 시 false. * * `--public-url`을 여기에 기억해 두는 이유: 고정 터널 주소는 한 번 정하면 안 바뀌는데, * 매 기동마다 다시 타이핑하게 만들면 결국 셸 프로파일에 export를 넣게 된다 — * 사용자가 관리할 값을 늘리는 것이고, 그건 라이브러리가 할 일을 미루는 것이다. */ export declare function saveConfigValue(key: keyof HubConfig, value: string): boolean; /** 저장된 설정 (없거나 깨졌으면 빈 객체) */ export declare function loadConfig(): HubConfig; export interface IngestKeyResult { key: string; /** 이번 기동에서 새로 만들었는지 — 사람에게 알릴 때만 쓴다 */ created: boolean; /** 저장에 실패했는지. true면 다음 기동에서 키가 바뀐다 — 반드시 알려야 한다 */ ephemeral: boolean; } /** * 저장된 인제스트 키를 읽고, 없으면 만들어 저장한다. * * 저장 실패로 기동을 막지 않는다 — 허브와 대시보드는 키 없이도 동작한다. 대신 * `ephemeral`로 알려서, 다음 기동에 값이 바뀐다는 사실을 사용자가 모르고 지나치지 않게 한다 * (조용히 바뀌면 배포된 앱이 이유 없이 끊긴 것처럼 보인다). */ export declare function loadOrCreateIngestKey(): IngestKeyResult;