/**
 * @fileoverview
 * Koa 기반의 GeoJSON → MBTiles 변환 및 VectorTile(MVT) 서비스 제공 라우터
 *
 * 이 라우터는 GeoJSON 데이터를 MBTiles 형식으로 변환하고, OpenLayers 등의 클라이언트에서
 * Vector Tile(MVT) 형식으로 요청할 수 있도록 API 엔드포인트를 제공합니다.
 *
 * 📌 주요 기능:
 * 1️⃣ `/tiles/regenerate`  (POST) → GeoJSON을 다시 MBTiles로 변환
 * 2️⃣ `/tiles/:z/:x/:y.mvt` (GET) → 특정 타일 데이터를 반환
 * 3️⃣ `/tiles/metadata`  (GET) → MBTiles의 메타데이터 반환
 *
 * 🚀 서비스 초기화 흐름:
 * 1. 서버 시작 시 `initializeTileService()` 호출
 *    - MBTiles 파일이 없으면 `convertGeoJsonToMBTiles()` 실행하여 생성
 *    - MBTiles가 존재하면 `loadTileSource()`를 호출하여 데이터 로드
 * 2. 클라이언트가 MVT 타일을 요청하면 `tileSource.getTile(z, x, y, callback)`을 통해 데이터 반환
 *
 * 📌 주요 처리 로직:
 * ✅ **GeoJSON → MBTiles 변환 (`convertGeoJsonToMBTiles`)**
 *    - `tippecanoe` CLI를 사용하여 GeoJSON을 MBTiles로 변환
 *    - 기존 MBTiles 파일이 있으면 삭제 후 재생성
 *    - `spawn`을 사용하여 비동기적으로 실행하며 로그 출력
 *
 * ✅ **MBTiles 파일을 로드 (`loadTileSource`)**
 *    - `@mapbox/mbtiles` 라이브러리를 사용하여 MBTiles 데이터베이스를 로드
 *    - 타일 요청이 있을 때 해당 타일을 `tileSource.getTile()`을 통해 제공
 *
 * ✅ **타일 요청 처리 (`/tiles/:z/:x/:y.mvt`)**
 *    - MBTiles에서 특정 타일을 찾아 바이너리 MVT 데이터로 반환
 *    - `Content-Encoding: gzip` 설정으로 압축된 타일 제공
 *    - `TMS 좌표 변환` 문제 제거하여 직접 요청 가능하도록 개선
 *
 * ✅ **타일셋 메타데이터 반환 (`/tiles/metadata`)**
 *    - MBTiles 파일에서 메타데이터 정보를 가져와 JSON 형태로 반환
 *
 * 📌 종속성:
 * - `koa-router`: Koa 기반 API 라우팅
 * - `fs`, `path`: 파일 시스템 접근 및 경로 처리
 * - `child_process`, `util`: `tippecanoe` 실행을 위한 비동기 프로세스 실행
 * - `@mapbox/mbtiles`: MBTiles 데이터베이스 접근 라이브러리
 * - `@things-factory/env`: 환경 변수 관리
 *
 * 📌 디렉토리 구조:
 * ```
 * /cache/mvt-tiles/        # 생성된 MBTiles 저장
 * /data/geo-json/          # 원본 GeoJSON 파일 저장
 * ```
 *
 * 📌 실행 방법:
 * 1. GeoJSON 데이터 준비
 * 2. Koa 서버 실행 → 자동으로 MBTiles 변환 후 서비스 시작
 * 3. 클라이언트(OpenLayers 등)에서 VectorTile 요청 가능
 * 4. 필요 시 `/tiles/regenerate` 엔드포인트로 타일 재생성
 *
 * @module geoRouter
 */
export declare const geoRouter: any;
export default geoRouter;
