import type { SdPackageConfig } from "../sd-config.types";
/**
 * import.meta.dirname에서 위로 탐색하여 package.json을 찾고 패키지 루트를 반환한다.
 */
export declare function findPackageRoot(startDir: string): string;
/**
 * packages/ 및 tests/ 디렉토리에서 모든 워크스페이스 패키지를 탐색한다.
 * 디렉토리명 → 상대 경로의 맵을 반환한다 (예: "orm" → "tests/orm").
 */
export declare function discoverWorkspacePackages(cwd: string): Map<string, string>;
/**
 * sd.config.ts 패키지만으로 pathMap을 구성한다 (tests 패키지 제외).
 */
export declare function buildPathMapFromConfig(configPackages: Record<string, SdPackageConfig | undefined>): Map<string, string>;
/**
 * workspace에서 발견된 tests/ 패키지를 sd.config.ts 패키지에 병합한다.
 * tests 패키지는 기본적으로 `{ target: "node" }`가 할당된다.
 * 모든 패키지의 pathMap(name → 상대 경로)도 함께 구성한다.
 * tests 패키지명이 sd.config.ts 패키지명과 충돌하면 SdError를 던진다.
 */
export declare function mergeTestsPackagesIntoConfig(configPackages: Record<string, SdPackageConfig | undefined>, workspacePackages: Map<string, string>): {
    merged: Record<string, SdPackageConfig | undefined>;
    pathMap: Map<string, string>;
};
/**
 * 지정된 디렉토리의 package.json에 @angular/core가
 * dependencies 또는 peerDependencies에 있는지 확인한다.
 */
export declare function hasAngularCoreDependency(pkgDir: string): boolean;
/**
 * 모든 target 이름이 sdConfig 패키지에 존재하는지 검증한다.
 * 알 수 없는 target이 발견되면 SdError를 던진다.
 * targets가 비어있으면 아무 동작도 하지 않는다.
 * @param targets - 검증할 패키지명 목록
 * @param packages - sdConfig.packages 객체
 */
export declare function validateTargets(targets: string[], packages: Record<string, unknown>): void;
//# sourceMappingURL=package-utils.d.ts.map