import type esbuild from "esbuild";
/**
 * AST에서 탐지된 Worker 패턴 하나를 나타낸다.
 */
export interface WorkerMatch {
    type: "browser" | "node";
    /** 전체 표현식의 start/end (치환 범위) */
    start: number;
    end: number;
    /** Worker/SharedWorker 이름 (browser만) */
    workerType?: string;
    /** URL 경로 문자열 값 */
    urlPath: string;
    /** 옵션 객체의 원본 소스 텍스트 (browser만, 없으면 undefined) */
    existingOpts?: string;
}
/**
 * acorn AST를 사용하여 소스 코드에서 Worker/SharedWorker 및 import.meta.resolve 패턴을 탐지한다.
 *
 * 정규식과 달리 주석, 문자열 리터럴 내부의 패턴을 오탐하지 않는다.
 * 파싱 실패 시 빈 배열을 반환한다.
 *
 * @param content - JavaScript 소스 코드. TypeScript는 상위 `transformWorkerPatterns()`가 사전 변환한다.
 */
export declare function findWorkerPatterns(content: string): WorkerMatch[];
/**
 * Worker 번들 빌드 결과를 포함하는 transform 결과.
 */
export interface TransformWorkerResult {
    contents: string;
    errors: esbuild.PartialMessage[];
    warnings: esbuild.PartialMessage[];
    /** write: false일 때 Worker 번들의 outputFiles (onEnd에서 병합용) */
    workerOutputFiles?: esbuild.OutputFile[];
    /** Worker 번들의 metafile (onEnd에서 병합용) */
    workerMetafile?: esbuild.Metafile;
}
/**
 * transformWorkerPatterns 옵션.
 */
export interface TransformWorkerOptions {
    /**
     * true이면 .ts/.cts/.mts 확장자여도 esbuild.transformSync(loader: "ts")를 스킵한다.
     * 호출자가 content가 이미 JS임을 보장하는 경우에만 사용한다 (예: ngtsc emit 결과).
     */
    skipTsTransform?: boolean;
}
/**
 * 파일 내용에서 Worker/SharedWorker 패턴을 감지하여 Worker 파일을 번들링하고
 * URL 경로를 번들된 파일 경로로 치환한다.
 *
 * Angular 컴파일러 플러그인 등 외부에서 직접 호출한다.
 *
 * @returns 변환 결과. 패턴이 없으면 undefined.
 */
export declare function transformWorkerPatterns(content: string, filePath: string, build: esbuild.PluginBuild, options?: TransformWorkerOptions): TransformWorkerResult | undefined;
/**
 * esbuild Worker 번들링 플러그인을 생성한다.
 *
 * onLoad에서 .js/.ts 파일의 Worker/SharedWorker 패턴을 감지하여
 * Worker 파일을 별도 ESM 번들로 빌드하고, URL 경로를 번들된 파일로 치환한다.
 */
export declare function createWorkerBundlePlugin(): esbuild.Plugin;
//# sourceMappingURL=esbuild-worker-plugin.d.ts.map