interface VercelRequestPathTransform {
    readonly args: string;
    readonly op: "set";
    readonly type: "request.path";
}
interface VercelServiceRouteDestination {
    readonly service?: string;
    readonly type?: string;
}
interface VercelRouteConfig {
    readonly destination?: string | VercelServiceRouteDestination;
    readonly handle?: string;
    readonly src?: string;
    readonly transforms?: readonly VercelRequestPathTransform[];
    readonly [key: string]: unknown;
}
interface VercelServiceConfig {
    readonly framework?: string;
    readonly routes?: readonly VercelRouteConfig[];
    readonly [key: string]: unknown;
}
/**
 * The top-level Vercel Build Output route that sends eve transport requests to
 * the generated eve service.
 */
export type EveVercelServiceRoute = {
    readonly destination: {
        readonly service: string;
        readonly type: "service";
    };
    readonly src: string;
};
/**
 * A service-scoped route carrying the `request.path` transform that pins the
 * path the eve runtime observes to the eve transport namespace.
 */
export type EveVercelServiceRequestPathRoute = {
    readonly src: string;
    readonly transforms: readonly [VercelRequestPathTransform];
};
/**
 * The generated eve service entry written into the Vercel Build Output
 * `services` record.
 */
export type EveVercelGeneratedService = {
    readonly buildCommand: string;
    readonly framework: "eve";
    readonly routes: readonly VercelRouteConfig[];
    readonly root: string;
};
/**
 * Minimal shape of the Nitro Vercel build-output config the module merges the
 * generated eve service into.
 */
export interface NitroVercelBuildConfig {
    version?: number;
    routes?: unknown[];
    services?: Record<string, VercelServiceConfig>;
    [key: string]: unknown;
}
/**
 * Result of {@link ensureEveVercelServicesConfig}: `root` when `vercel.json`
 * already declares stable services (the user owns routing; nothing is
 * generated), `generated` with the service record to merge into the Nitro
 * Vercel build config otherwise.
 */
export type EnsureEveVercelServicesConfigResult = {
    readonly mode: "root";
} | {
    readonly mode: "generated";
    readonly services: Record<string, EveVercelGeneratedService>;
};
/**
 * Build the top-level Build Output route that exposes the eve service on the
 * eve transport namespace (`/eve/v1/*`).
 */
export declare function createEveServiceRoute(serviceName?: string): EveVercelServiceRoute;
/**
 * Build the eve service's own route that sets `request.path` so the eve
 * runtime observes the transport path regardless of how the platform routed
 * the request into the service.
 */
export declare function createEveServiceRequestPathRoute(): EveVercelServiceRequestPathRoute;
/**
 * Resolve the stable Vercel services configuration for a Nuxt + eve
 * deployment.
 *
 * When `vercel.json` (looked up from the linked Vercel project root, falling
 * back to the Nuxt root) already declares stable `services`, it must include
 * an eve service and the module generates nothing. Otherwise this prepares a
 * generated eve service — creating its isolated build root under
 * `.eve/vercel-services/eve` so the eve build output cannot collide with the
 * Nuxt Build Output — and returns the service record plus the public service
 * route for the caller to merge into the Nitro Vercel build config. A legacy
 * `experimentalServices` field is ignored with a migration warning: Vercel no
 * longer routes it.
 */
export declare function ensureEveVercelServicesConfig(input: {
    readonly appRoot: string;
    readonly eveBuildCommand?: string;
    readonly nuxtRoot: string;
}): Promise<EnsureEveVercelServicesConfigResult>;
/**
 * Merge the generated eve service and its public route into a Nitro Vercel
 * build config (`nitro.vercel.config`).
 *
 * The service route is inserted before an existing `handle: "filesystem"`
 * route, or prepended when none exists — Nitro appends its own generated
 * routes (including the filesystem handle) after this config's routes, so the
 * eve route always resolves before the Nuxt app's filesystem routing. An eve
 * service already configured by the user is preserved and only gains the
 * `request.path` route; everything else passes through untouched.
 */
export declare function mergeEveVercelConfig(existing: NitroVercelBuildConfig | undefined, generated: Extract<EnsureEveVercelServicesConfigResult, {
    mode: "generated";
}>): NitroVercelBuildConfig;
export {};
