import { ApiInput, ApiRef, AppDescriptor, AppInput, AttachmentInput, AttachmentRef, UiInput, UiRef } from "./schema.mjs";
import { applyDevOverlay } from "./resolve.mjs";
//#region src/descriptor/constructors.d.ts
/**
 * The authored App — returns a pure, Zod-validated, serializable descriptor.
 * Constructors never execute app code (the descriptor IS the deployment plan);
 * resolution and deployment consume it as data.
 */
declare function App(input: AppInput): AppDescriptor;
/** The app.api slot. */
declare function API(input: ApiInput): ApiRef;
/** The app.ui slot. */
declare function UI(input: UiInput): UiRef;
/**
 * Attach another App — by local workspace path (`Plugin("auth").path("plugins/auth")`)
 * or by published module reference (`Plugin("auth").extends("bos://…")`).
 * The attachment's `name` (the plugin's package name, e.g.
 * `@everything-dev/auth-plugin`) may differ from the registry key; pass it
 * through `extra` to override.
 */
declare function Plugin<K extends string>(name: K): {
  path: (dir: string, extra?: Omit<AttachmentInput, "path">) => AttachmentRef;
  extends: (ref: string, extra?: Omit<AttachmentInput, "extends">) => AttachmentRef;
};
//#endregion
export { API, App, Plugin, UI, applyDevOverlay };
//# sourceMappingURL=constructors.d.mts.map