/**
 * Canonical Contract Types & Validation
 *
 * Type definitions aligned with the platform contract schemas.
 * Runtime validation uses inline JSON Schema objects below.
 */
export interface ExecutionContext {
    execution_id: string;
    parent_span_id: string;
    simulation_resolution: string;
    repo_name: string;
    [key: string]: unknown;
}
export interface SimulationRequest {
    execution_context: ExecutionContext;
    scenario?: Record<string, unknown>;
    plan_ref?: Record<string, unknown>;
    config?: Record<string, unknown>;
    iterations?: number;
    [key: string]: unknown;
}
export interface ResultPacket {
    execution_id: string;
    status: string;
    environment?: string;
    created_at: string;
    completed_at?: string;
    duration_ms?: number;
    execution_metadata: {
        trace_id: string;
        timestamp: string;
        service: string;
        [key: string]: unknown;
    };
    execution_graph?: Record<string, unknown>;
    [key: string]: unknown;
}
export interface ExecutionGraph {
    graph_id: string;
    root_node: string;
    nodes: unknown[];
    edges?: unknown[];
    created_at: string;
    [key: string]: unknown;
}
/**
 * execution_context schema — every request to downstream services
 * MUST include a valid execution context.
 */
export declare const executionContextSchema: {
    readonly type: "object";
    readonly properties: {
        readonly execution_id: {
            readonly type: "string";
            readonly minLength: 1;
        };
        readonly parent_span_id: {
            readonly type: "string";
            readonly minLength: 1;
        };
        readonly simulation_resolution: {
            readonly type: "string";
            readonly minLength: 1;
        };
        readonly repo_name: {
            readonly type: "string";
            readonly minLength: 1;
        };
    };
    readonly required: readonly ["execution_id", "parent_span_id", "simulation_resolution", "repo_name"];
    readonly additionalProperties: true;
};
/**
 * result_packet schema — every response from results-index
 * MUST conform to this shape.
 */
export declare const resultPacketSchema: {
    readonly type: "object";
    readonly properties: {
        readonly execution_id: {
            readonly type: "string";
        };
        readonly status: {
            readonly type: "string";
        };
        readonly environment: {
            readonly type: "string";
        };
        readonly created_at: {
            readonly type: "string";
        };
        readonly completed_at: {
            readonly type: "string";
        };
        readonly duration_ms: {
            readonly type: "number";
        };
        readonly execution_metadata: {
            readonly type: "object";
            readonly properties: {
                readonly trace_id: {
                    readonly type: "string";
                };
                readonly execution_id: {
                    readonly type: "string";
                };
                readonly timestamp: {
                    readonly type: "string";
                };
                readonly service: {
                    readonly type: "string";
                };
            };
            readonly additionalProperties: true;
        };
        readonly execution_graph: {
            readonly type: "object";
        };
    };
    readonly required: readonly ["execution_id", "status", "created_at", "execution_metadata"];
    readonly additionalProperties: true;
};
/**
 * execution_graph schema — validates graph structure in responses.
 */
export declare const executionGraphSchema: {
    readonly type: "object";
    readonly properties: {
        readonly graph_id: {
            readonly type: "string";
        };
        readonly root_node: {
            readonly type: "string";
            readonly const: "ruvector-service";
        };
        readonly nodes: {
            readonly type: "array";
            readonly minItems: 1;
        };
        readonly edges: {
            readonly type: "array";
        };
        readonly created_at: {
            readonly type: "string";
        };
    };
    readonly required: readonly ["graph_id", "root_node", "nodes", "created_at"];
    readonly additionalProperties: true;
};
/**
 * simulation_request schema — validates outbound simulation payloads.
 */
export declare const simulationRequestSchema: {
    readonly type: "object";
    readonly properties: {
        readonly execution_context: {
            readonly type: "object";
            readonly properties: {
                readonly execution_id: {
                    readonly type: "string";
                    readonly minLength: 1;
                };
                readonly parent_span_id: {
                    readonly type: "string";
                    readonly minLength: 1;
                };
                readonly simulation_resolution: {
                    readonly type: "string";
                    readonly minLength: 1;
                };
                readonly repo_name: {
                    readonly type: "string";
                    readonly minLength: 1;
                };
            };
            readonly required: readonly ["execution_id", "parent_span_id", "simulation_resolution", "repo_name"];
            readonly additionalProperties: true;
        };
        readonly scenario: {
            readonly type: "object";
        };
        readonly plan_ref: {
            readonly type: "object";
        };
        readonly config: {
            readonly type: "object";
        };
        readonly iterations: {
            readonly type: "integer";
            readonly minimum: 1;
        };
    };
    readonly required: readonly ["execution_context"];
    readonly additionalProperties: true;
};
/**
 * Validate that an execution context contains all required fields.
 * Throws immediately if any required field is missing.
 * Do NOT create implicit defaults for simulation_resolution.
 */
export declare function validateExecutionContext(ctx: Record<string, unknown>, correlationId?: string): void;
/**
 * Validate that a result packet from results-index conforms to the canonical schema.
 * Throws if required contract fields are missing.
 */
export declare function validateResultPacket(data: unknown, correlationId?: string): void;
//# sourceMappingURL=canonical.d.ts.map