import type { EmbeddedPiRunResult } from "../../agents/pi-embedded-runner/types.js";
export type StrictAgenticExecutionMode = "off" | "warn" | "enforce";
export type StrictAgenticRuntimePolicy = {
    /**
     * Public Fased policy is warning-only for now. Enforcement remains internal
     * contract state until chat/channel/cron retry semantics are product-defined.
     */
    mode?: "off" | "warn";
};
export type StrictAgenticClassification = "fulfilled" | "planned_without_action" | "empty";
export type StrictAgenticReason = "user_visible_payload" | "error_payload" | "messaging_tool_sent" | "cron_added" | "pending_tool_call" | "empty_result";
export type StrictAgenticDecisionAction = "accept" | "warn" | "retry_or_fail";
export type StrictAgenticPayload = NonNullable<EmbeddedPiRunResult["payloads"]>[number] & {
    isReasoning?: boolean;
};
export type StrictAgenticRunInput = Pick<EmbeddedPiRunResult, "didSendViaMessagingTool" | "meta" | "successfulCronAdds"> & {
    payloads?: StrictAgenticPayload[];
};
export type StrictAgenticRunClassification = {
    classification: StrictAgenticClassification;
    reason: StrictAgenticReason;
    hasUserVisiblePayload: boolean;
    hasWorkflowAction: boolean;
    hasPendingToolCall: boolean;
};
export type StrictAgenticRunDecision = StrictAgenticRunClassification & {
    mode: StrictAgenticExecutionMode;
    action: StrictAgenticDecisionAction;
    ok: boolean;
};
export declare const STRICT_AGENTIC_MODE_ENV = "FASED_STRICT_AGENTIC_MODE";
export declare function classifyStrictAgenticRun(result: StrictAgenticRunInput): StrictAgenticRunClassification;
export declare function resolveStrictAgenticRunDecision(params: {
    result: StrictAgenticRunInput;
    mode?: StrictAgenticExecutionMode;
}): StrictAgenticRunDecision;
export declare function resolveStrictAgenticRuntimeMode(env?: Partial<Record<typeof STRICT_AGENTIC_MODE_ENV, string | undefined>>, policy?: StrictAgenticRuntimePolicy | null): StrictAgenticExecutionMode;
export declare function formatStrictAgenticAuditLine(params: {
    decision: StrictAgenticRunDecision;
    runId: string;
    sessionKey?: string;
    provider?: string;
    model?: string;
}): string;
