import { AIRun } from './ai-run-evidence';
export interface SupportAIRunAdapterInput {
    ticket?: Record<string, any>;
    job?: Record<string, any>;
    versions?: Array<Record<string, any>>;
    buildPlans?: Array<Record<string, any>>;
    aiJobs?: Array<Record<string, any>>;
    taskEvents?: Array<Record<string, any>>;
    usageLedger?: Array<Record<string, any>>;
    commits?: Array<Record<string, any>>;
    qaEvidence?: Record<string, any>;
    now?: Date | string;
}
export interface AICoderAIRunAdapterInput {
    app?: Record<string, any>;
    job?: Record<string, any>;
    logs?: Array<Record<string, any>>;
    usageLedger?: Array<Record<string, any>>;
    commits?: Array<Record<string, any>>;
    qaEvidence?: Record<string, any>;
    now?: Date | string;
}
export interface AssistantAIRunAdapterInput {
    runId?: string;
    requestId?: string;
    messageId?: string;
    conversation?: Record<string, any>;
    messages?: Array<Record<string, any>>;
    issueReports?: Array<Record<string, any>>;
    usageLedger?: Array<Record<string, any>>;
    correctnessChecks?: Array<Record<string, any>>;
    answerQuality?: Record<string, any>;
    now?: Date | string;
}
export type AssistantAnswerQualityStatus = 'ready' | 'missing_data_source' | 'date_incorrect' | 'missing_date_window' | 'illegal_query_shape' | 'missing_query_proof' | 'query_error' | 'permission_error' | 'no_data_unverified' | 'missing_citations' | 'low_confidence' | 'missing_next_action' | 'incorrect' | 'blocked';
export interface AssistantAnswerQualityInput {
    answerQuality?: Record<string, any>;
    correctnessChecks?: Array<Record<string, any>>;
    now?: Date | string;
}
export interface AssistantAnswerQualityDecision {
    ready: boolean;
    status: AssistantAnswerQualityStatus;
    reason: string;
    blockers: string[];
    queryStatus: 'ok' | 'no_data' | 'query_error' | 'permission_error' | 'unknown';
    confidenceLevel: 'high' | 'medium' | 'low' | 'unknown';
    dateBasis?: string;
    expectedCurrentDate?: string;
    dateWindowRequired: boolean;
    dateWindowPresent: boolean;
    dateWindow?: {
        startDate?: string;
        endDate?: string;
        mode?: string;
        months?: number;
    };
    noDataConfirmed: boolean;
    legalQueryShape: boolean;
    citationRefs: string[];
    queryEvidenceRequired: boolean;
    queryEvidencePresent: boolean;
    queryEvidenceRefs: string[];
    queryExecutionCount: number;
    nextActions: string[];
    evidenceRefs: string[];
    failedChecks: string[];
    recordedAt: string;
}
export type AssistantAnswerActionabilityStatus = 'ready_to_answer' | 'needs_query_repair' | 'needs_permission' | 'needs_no_data_verification' | 'needs_date_window_repair' | 'needs_query_shape_repair' | 'needs_evidence' | 'needs_confidence_review' | 'needs_next_action' | 'incorrect' | 'blocked';
export interface AssistantAnswerActionabilityContract {
    contractId: string;
    status: AssistantAnswerActionabilityStatus;
    primaryCommand: string;
    label: string;
    canAnswerCustomer: boolean;
    canDraftSupportReply: boolean;
    canSendCustomerReply: boolean;
    requiresHumanReview: boolean;
    canRunWithoutCodexMonitor: boolean;
    codexFallbackRequired: boolean;
    costRisk: 'free_or_deterministic' | 'small_model_or_qa' | 'expensive_model' | 'release_or_customer_send' | 'manual_blocked';
    queryResultClass: AssistantAnswerQualityDecision['queryStatus'];
    confidenceLevel: AssistantAnswerQualityDecision['confidenceLevel'];
    decisionBasis: {
        answerQualityStatus: AssistantAnswerQualityStatus;
        queryStatus: AssistantAnswerQualityDecision['queryStatus'];
        queryEvidencePresent: boolean;
        noDataConfirmed: boolean;
        legalQueryShape: boolean;
        dateWindowRequired: boolean;
        dateWindowPresent: boolean;
        citationCount: number;
        nextActionCount: number;
    };
    requiredEvidence: string[];
    successEvidence: string[];
    blockers: string[];
    nextActions: string[];
    nextCommands: string[];
    forbiddenActions: string[];
    evidenceRefs: string[];
    recordedAt: string;
}
export declare function evaluateAssistantAnswerQuality(input?: AssistantAnswerQualityInput): AssistantAnswerQualityDecision;
export declare function buildAssistantAnswerActionabilityContract(decision: AssistantAnswerQualityDecision, now?: Date | string): AssistantAnswerActionabilityContract;
export declare function buildSupportAIRunFromEvidence(input: SupportAIRunAdapterInput): AIRun;
export declare function buildAICoderAIRunFromEvidence(input: AICoderAIRunAdapterInput): AIRun;
export declare function buildAssistantAIRunFromEvidence(input: AssistantAIRunAdapterInput): AIRun;
