/**
 * Compatibility contract for the on-disk distributed render plan.
 *
 * A missing descriptor means the original v1 plan layout. This preserves
 * replay compatibility with plan directories produced before the descriptor
 * existed. Once a descriptor is present it must be complete and recognized:
 * silently guessing across a partially-written or newer layout could render
 * incorrect pixels or make assemble consume the wrong artifacts.
 */
export declare const PLAN_SCHEMA_VERSION: 1;
export declare const PLAN_ARTIFACT_LAYOUT: "plan-dir-v1";
export declare const PLAN_HASH_SCHEMA: "hyperframes-plan-hash-v1";
export declare const PLAN_V2_SCHEMA_VERSION: 2;
export declare const PLAN_V2_ARTIFACT_LAYOUT: "content-addressed-plan-v2";
export declare const PLAN_V2_HASH_SCHEMA: "hyperframes-plan-manifest-hash-v2";
export declare const PLAN_PROTOCOL_UNSUPPORTED: "PLAN_PROTOCOL_UNSUPPORTED";
export interface PlanProtocolDescriptor {
    readonly schemaVersion: number;
    readonly artifactLayout: string;
    readonly hashSchema: string;
}
export interface PlanProtocolV1Descriptor extends PlanProtocolDescriptor {
    readonly schemaVersion: typeof PLAN_SCHEMA_VERSION;
    readonly artifactLayout: typeof PLAN_ARTIFACT_LAYOUT;
    readonly hashSchema: typeof PLAN_HASH_SCHEMA;
}
export interface PlanProtocolV2Descriptor extends PlanProtocolDescriptor {
    readonly schemaVersion: typeof PLAN_V2_SCHEMA_VERSION;
    readonly artifactLayout: typeof PLAN_V2_ARTIFACT_LAYOUT;
    readonly hashSchema: typeof PLAN_V2_HASH_SCHEMA;
}
export type SupportedPlanProtocolDescriptor = PlanProtocolV1Descriptor | PlanProtocolV2Descriptor;
/** Descriptor for the legacy v1 execution-directory transport. */
export declare const PLAN_PROTOCOL_V1: Readonly<PlanProtocolV1Descriptor>;
/**
 * Descriptor written by the legacy v1 planner and accepted by v1 workers.
 *
 * @deprecated Use {@link PLAN_PROTOCOL_V1}. Kept as an identity-preserving
 * alias for existing integrations.
 */
export declare const CURRENT_PLAN_PROTOCOL: Readonly<PlanProtocolV1Descriptor>;
/** Explicit opt-in descriptor for the content-addressed v2 transport layout. */
export declare const PLAN_PROTOCOL_V2: Readonly<PlanProtocolV2Descriptor>;
export interface PlanProtocolConsumerCapabilities {
    readonly accepts: readonly Readonly<PlanProtocolDescriptor>[];
    readonly acceptsLegacyV1WithoutDescriptor: boolean;
}
export interface DistributedRenderCapabilities {
    readonly roles: Readonly<{
        planner: Readonly<{
            produces: readonly Readonly<PlanProtocolDescriptor>[];
        }>;
        chunk: Readonly<PlanProtocolConsumerCapabilities>;
        assembler: Readonly<PlanProtocolConsumerCapabilities>;
    }>;
}
/** Serializable capability payload for fleet rollout and worker handshakes. */
export declare const DISTRIBUTED_RENDER_CAPABILITIES: Readonly<DistributedRenderCapabilities>;
export declare function getDistributedRenderCapabilities(): Readonly<DistributedRenderCapabilities>;
/** Typed, deterministic compatibility failure. Retrying on the same worker cannot heal it. */
export declare class PlanProtocolUnsupportedError extends Error {
    readonly code: typeof PLAN_PROTOCOL_UNSUPPORTED;
    constructor(reason: string);
}
/**
 * Read and validate the plan protocol before a worker consumes other plan
 * artifacts. Unknown fields on a recognized v1 descriptor are intentionally
 * ignored so optional metadata can be added without a lockstep fleet deploy.
 */
export declare function readPlanProtocol(planJson: unknown, capabilities?: Readonly<PlanProtocolConsumerCapabilities>): Readonly<SupportedPlanProtocolDescriptor>;
/**
 * Validate that a directory is directly consumable by the legacy execution
 * functions. A v2 transport must be materialized first; rejecting it here
 * prevents readers from probing paths that have different meanings in v2.
 */
export declare function readPlanProtocolV1(planJson: unknown, capabilities?: Readonly<PlanProtocolConsumerCapabilities>): Readonly<PlanProtocolV1Descriptor>;
//# sourceMappingURL=planProtocol.d.ts.map