import type ts from "typescript";
import esbuild from "esbuild";
import type { TypecheckEnv } from "../utils/tsconfig";
import type { SerializedDiagnostic } from "../typecheck/typecheck-serialization";
import type { LintWithProgramResult } from "../lint/lint-with-program";
/**
 * esbuild watch context 생성 옵션
 */
export interface EsbuildContextOptions {
    pkgDir: string;
    entryPoints: string[];
    env?: Record<string, string>;
    external: string[];
    /** tsc 플러그인 옵션. 제공 시 createTscPlugin으로 플러그인을 생성하여 esbuild context에 포함한다. */
    tsc?: {
        cwd: string;
        output: {
            dts: boolean;
        };
        env?: TypecheckEnv;
        includeTests?: boolean;
        lint?: boolean;
    };
}
/**
 * esbuild watch context를 생성한다.
 * dev 모드 전용 (metafile:true, write:false).
 */
export declare function createContext(options: EsbuildContextOptions): Promise<void>;
/**
 * esbuild rebuild를 실행하고 metafile을 갱신한다.
 * context가 없으면 null을 반환한다 (tsc-only 경로).
 */
export declare function rebuild(): Promise<{
    success: boolean;
    errors?: string[];
    warnings?: string[];
} | null>;
/**
 * esbuild context를 재생성한다 (LOGIC-001).
 *
 * 선제 초기화 + try/finally 패턴으로 리소스 해제를 보장한다:
 * 1. old context를 로컬 변수에 보관
 * 2. 모듈 참조를 undefined로 선제 초기화 — 생성 실패 시 disposed 참조 방지
 * 3. 새 context 생성 시도
 * 4. finally에서 old context dispose — 생성 성공/실패와 무관하게 실행
 */
export declare function recreateContext(options: EsbuildContextOptions): Promise<void>;
/**
 * esbuild context를 정리하고 상태를 초기화한다.
 */
export declare function dispose(): Promise<void>;
/**
 * 마지막 빌드의 metafile을 반환한다 (변경 필터링에 사용).
 */
export declare function getMetafile(): esbuild.Metafile | undefined;
/**
 * esbuild context 존재 여부를 반환한다.
 */
export declare function hasContext(): boolean;
/**
 * tsc 플러그인의 ts.Program을 반환한다.
 * 플러그인이 없으면 undefined를 반환한다.
 */
export declare function getTscProgram(): ts.Program | undefined;
/**
 * tsc 플러그인의 affected files를 반환한다.
 * 플러그인이 없으면 undefined를 반환한다.
 */
export declare function getTscAffectedFiles(): ReadonlySet<string> | undefined;
/**
 * tsc 플러그인의 diagnostics를 반환한다.
 * 플러그인이 없으면 빈 배열을 반환한다.
 */
export declare function getTscDiagnostics(): SerializedDiagnostic[];
/**
 * tsc 플러그인의 lint 결과를 반환한다.
 * 플러그인이 없거나 lint가 비활성이면 undefined를 반환한다.
 */
export declare function getTscLintResult(): LintWithProgramResult | undefined;
//# sourceMappingURL=server-esbuild-context.d.ts.map