/**
 * Node-only `sites.deployDir` convenience.
 *
 * **As of v1.34, this is a thin wrapper over `r.project(id).apply`** — bytes ride
 * through the unified CAS substrate, the deploy flows through the v2 plan/
 * commit endpoints, and the agent-observable result remains a
 * {@link SiteDeployResult}. Existing callers keep their input shape
 * (`{ project, dir, onEvent? }`), and `onEvent` receives the unified
 * `DeployEvent` shapes from the SDK's `deploy` namespace.
 *
 * Imports `node:fs/promises` via `fileSetFromDir`, so this module remains
 * Node-only — V8 isolates use `r.project(id).apply` with in-memory byte sources.
 */
import { Sites, type SiteDeployResult } from "../namespaces/sites.js";
import type { ContentRef, DeployEvent as UnifiedDeployEvent } from "../namespaces/deploy.types.js";
export interface DeployDirOptions {
    /** Project ID the deployment is linked to. */
    project: string;
    /** Local directory to walk. Paths in the manifest are relative to this root. */
    dir: string;
    /**
     * Optional progress callback. Errors thrown synchronously are caught and
     * dropped — a buggy consumer cannot abort the deploy.
     */
    onEvent?: (event: DeployEvent) => void;
}
export type DeployEvent = UnifiedDeployEvent;
/**
 * Sites namespace enriched with the Node-only `deployDir` convenience.
 * All existing `Sites` methods are inherited unchanged.
 */
export declare class NodeSites extends Sites {
    /**
     * Deploy every file under `dir` as a static site. Walks the tree (skipping
     * `.git`/`node_modules`/`.DS_Store`, rejecting symlinks), produces an
     * `FsFileSource`-backed `FileSet`, and delegates to `r.project(id).apply` —
     * which uploads only the bytes the gateway doesn't already have, applies
     * the new release atomically, and polls the operation until terminal.
     */
    deployDir(opts: DeployDirOptions): Promise<SiteDeployResult>;
}
export type { ContentRef };
//# sourceMappingURL=sites-node.d.ts.map