import { GraphCatalog } from "./catalog";
import { CompileInput, QueryPlan } from "./types";
/**
 * Compiles a {@link RemoteJoinerQuery} into an executable {@link QueryPlan}.
 *
 * Field-alias shortcuts are rewritten into real relationship paths and recorded
 * as {@link ShortcutSpec}s. Same-service consecutive hops are nested so one
 * module fetch can load multiple levels.
 */
/**
 * Example walkthrough — order with fieldAlias + nested expand:
 *
 *   alias: "order"
 *   fields: ["id"]
 *   expands: [
 *     { property: "product_user_alias", fields: ["id", "email"], args: [...] },
 *     { property: "products.variant" }
 *   ]
 *
 * Compile produces roughly:
 *   expands: {
 *     _root → order service, fields [id], stages [...]
 *     _root.products → still on order (same service hop toward product via nested)
 *     _root.products.product → product service (cross-service boundary)
 *     _root.products.product.user → user service
 *     _root.products.variant → product service
 *   }
 *   shortcuts: [{ location: [], property: "product_user_alias", path: ["products","product","user"] }]
 *   stages[0] = root; stages[1] = product + variant; stages[2] = user
 */
export declare function compileQuery({ query, serviceConfig, options, initialData }: CompileInput, catalog: GraphCatalog): QueryPlan;
//# sourceMappingURL=compile.d.ts.map