export type DebugReplayHookBoundary = "input" | "contract" | "governance" | "runtime-state" | "replay";
export type DebugReplayHookCallerKind = "application" | "official-module" | "runtime-surface" | "inspection" | "debug";
export type DebugReplayHookCaller = {
    kind: DebugReplayHookCallerKind;
    id: string;
    moduleId?: string;
};
export type DebugReplayHookGate = {
    accepted: boolean;
    reason?: string;
};
export type DebugReplayHookMode = "dry-run" | "plan";
export type DebugReplayFrame = {
    frameId: string;
    eventType: string;
    timestamp?: string;
    payloadSummary?: string;
    dependsOnFrameIds?: readonly string[];
};
export type DebugReplayHookErrorCode = "MISSING_RUNTIME_ID" | "MISSING_CALLER" | "MISSING_REPLAY_ID" | "MISSING_REPLAY_FRAMES" | "RUNTIME_NOT_READY" | "CONTRACT_REJECTED" | "GOVERNANCE_REJECTED" | "UNSAFE_REPLAY_MODE" | "REPLAY_FRAME_INVALID";
export type DebugReplayHookRequest = {
    runtimeId?: string;
    caller?: DebugReplayHookCaller;
    replayId?: string;
    mode?: DebugReplayHookMode | string;
    runtimeReady?: boolean;
    contract?: DebugReplayHookGate;
    governance?: DebugReplayHookGate;
    frames?: readonly DebugReplayFrame[];
    allowUnsafeReplay?: boolean;
};
export type DebugReplayPlan = {
    runtimeId: string;
    replayId: string;
    caller: DebugReplayHookCaller;
    mode: DebugReplayHookMode;
    frames: readonly DebugReplayFrame[];
    frameCount: number;
    dispatch: "dry-run";
    sideEffectPolicy: "blocked";
    replayable: true;
    probeSurface: "runtime.debug.debugReplayHook";
    contractChecked: true;
    governanceChecked: true;
    unsafeSideEffects: false;
};
export type DebugReplayHookError = {
    code: DebugReplayHookErrorCode;
    message: string;
    boundary: DebugReplayHookBoundary;
    publicSafe: true;
};
export type DebugReplayHookResult = {
    ok: true;
    plan: DebugReplayPlan;
    events: readonly string[];
} | {
    ok: false;
    error: DebugReplayHookError;
    events: readonly string[];
};
export declare function planDebugReplayHook(request?: DebugReplayHookRequest): DebugReplayHookResult;
