/**
 * Absolute path to the bundled `app-fullstack` template tree that the
 * v2 -> v3 migration lays down locally before asking the server to flip
 * `application_v2.template_name`.
 *
 * Resolution walks up from the compiled module's directory and at each
 * level checks two candidates:
 *   1. `migration-templates/app-fullstack` -- the bundled location
 *      populated by
 *      `packages/vite-plugin-file-sync/scripts/copy-migration-templates.mjs`
 *      and by the CLI's own post-esbuild copy step. This is what the
 *      published packages rely on.
 *   2. `packages/demo-apps/app-fullstack` -- the monorepo dev fallback
 *      used when tests run from source (tsx/vitest) before a bundled
 *      copy exists.
 *
 * The walk handles several layouts without special-casing:
 *   - `<pkg>/dist/migration/get-fullstack-template-dir.js` (plugin's
 *     own compiled output) finds the bundled tree one level up.
 *   - `<cli>/dist/chunk-XYZ.js` (esbuild-bundled into the CLI) finds
 *     the bundled tree in the same dir, because the CLI build copies
 *     it into `<cli>/dist/migration-templates/app-fullstack`.
 *   - `<repo>/packages/.../src/migration/get-fullstack-template-dir.ts`
 *     (tsx dev run) walks up to `<repo>` and finds the workspace copy.
 *
 * Throws if no candidate exists -- the restructure module cannot
 * proceed without a template and it is better to fail here with a clear
 * error than to half-migrate an app.
 */
export declare function getFullstackTemplateDir(): string;
/**
 * Pure lookup: walk up from `startDir` and return the first existing
 * candidate. Exported for tests so we can drive the walk against a
 * synthetic filesystem without mocking `import.meta.url`.
 */
export declare function findFullstackTemplate(startDir: string): string | null;
//# sourceMappingURL=get-fullstack-template-dir.d.ts.map