import type { Config } from '@oclif/core';
import AbstractAuthenticatedCommand from '../../abstract-authenticated-command';
/**
 * `forest layout apply` — compute the JSON-Patch plan between forest-layout.json
 * and the live rendering, then PATCH it to the environment. Idempotent: an
 * unchanged file produces no operation and sends nothing.
 */
export default class LayoutApplyCommand extends AbstractAuthenticatedCommand {
    private readonly env;
    private readonly inquirer;
    static args: {
        file: import("@oclif/core/lib/interfaces").Arg<string, Record<string, unknown>>;
    };
    static description: string;
    static flags: {
        env: import("@oclif/core/lib/interfaces").OptionFlag<string, import("@oclif/core/lib/interfaces").CustomOptions>;
        team: import("@oclif/core/lib/interfaces").OptionFlag<string, import("@oclif/core/lib/interfaces").CustomOptions>;
        projectId: import("@oclif/core/lib/interfaces").OptionFlag<number, import("@oclif/core/lib/interfaces").CustomOptions>;
        force: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
        'with-workflows': import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
    };
    constructor(argv: string[], config: Config, plan?: any);
    protected runAuthenticated(): Promise<void>;
    /**
     * Applying a file pulled from ANOTHER environment without `--with-workflows`
     * would patch its `bpmnAwsS3Identifier` pointers into the target, where the
     * S3 objects do not exist (the pointer is env-local). The ops are kept — a
     * same-env restore legitimately rewrites its own pointers, and the header may
     * be wrong or hand-edited — but the user is warned loudly beforehand.
     */
    private warnOnCrossEnvBpmnRefs;
    /**
     * Push the plan: one atomic PATCH per domain (stable order), then the step and
     * sidecar BPMN uploads. Returns false (and exits 2) on a recoverable API error;
     * re-running converges since each domain patch is atomic.
     */
    private pushChanges;
    /**
     * Resolve the sidecars whose target workflow did not exist before the domain
     * patches (they were `add`ed by this very apply): re-fetch the workflows
     * document once and match id-then-name. Still-unmatched sidecars are skipped
     * with a warning — never uploaded under a nonexistent id.
     */
    private resolveSidecarTargets;
    /** Print the human-readable plan preview (diff + workflow uploads + sidecar warnings). */
    private logPlan;
    private confirm;
}
//# sourceMappingURL=apply.d.ts.map