import type { Run402ActionResult, Run402ActionRunOptions, Run402Actions, Run402ProjectsProvisionActionInput, Run402TierSetActionInput, Run402UpActionInput, Run402UpResult } from "../actions.js";
import { type Run402AppUpNextAction } from "../app-up.js";
import type { Run402 } from "../index.js";
import type { ProvisionResult } from "../namespaces/projects.types.js";
import type { TierSetResult } from "../namespaces/tier.js";
export type NodeActionTargetKind = "cloud" | "core" | "unknown";
export interface NodeActionsOptions {
    /** Non-secret CLI recovery context. */
    profile?: string;
    targetKind?: NodeActionTargetKind;
    cwd?: string;
}
/**
 * Node implementation of the action runner. The public CLI should treat this
 * as the orchestration kernel and stay a flag parser / renderer.
 */
export declare class NodeActions implements Run402Actions {
    #private;
    private readonly sdk;
    private readonly opts;
    constructor(sdk: Run402, opts?: NodeActionsOptions);
    run(input: Run402ProjectsProvisionActionInput, opts?: Run402ActionRunOptions): Promise<Run402ActionResult<ProvisionResult>>;
    run(input: Run402TierSetActionInput, opts?: Run402ActionRunOptions): Promise<Run402ActionResult<TierSetResult>>;
    run(input: Run402UpActionInput, opts?: Run402ActionRunOptions): Promise<Run402ActionResult<Run402UpResult>>;
    up(input?: Omit<Run402UpActionInput, "type">, opts?: Run402ActionRunOptions): Promise<Run402ActionResult<Run402UpResult>>;
}
/**
 * Slug a human project name into an addable `<name>.run402.com` label
 * (3-63 chars, lowercase alphanumeric + hyphens), or null when it cannot be.
 */
export declare function subdomainSlugFromProjectName(name: string | null | undefined): string | null;
/**
 * The `missing_public_origin` remedy: a path check cannot resolve without a
 * public origin, and the fix is to bind a subdomain — either right now via
 * `run402 subdomains add <name>` (which binds the live release with no
 * further flags) or declaratively in the manifest's `subdomains.set`.
 */
export declare function addSubdomainNextAction(projectName: string | null, checkId: string): Run402AppUpNextAction;
/** Resolve only local destination intent. Approval and global active state are never selectors. */
export declare function resolveDeploymentTarget(input: {
    appRoot: string;
    manifestPath?: string;
    projectId?: string;
    environmentProjectId?: string;
    manifestProjectId?: string;
    name?: string;
    targetKind?: NodeActionTargetKind;
    apiBase?: string;
    allowUnresolved?: boolean;
}): Promise<{
    project_id: string | null;
    project_name: string | null;
    source: "explicit" | "workspace_link" | "manifest" | "create" | "unresolved";
}>;
//# sourceMappingURL=actions-node.d.ts.map