import type { RequirementContract } from '../../features/company';

/**
 * Intent Alignment 카드의 4가지 표시 모드 payload 빌더. webview 송신은 provider 가
 * 담당 — 이 모듈은 모드별 payload shape 변환만.
 *
 * 카드 모드:
 *   - 'auto-proceed' — high confidence + 질문 없음 → 사용자 확인 없이 진행, 알림용
 *   - 'questions' — 모델이 묻고 싶은 게 있음, 사용자 답변 대기
 *   - 'confirm' — 질문은 없으나 사용자가 진행 vs 취소 결정 필요
 *   - 'cancelled' — 사용자가 카드를 닫음, 채팅 input 잠금 해제만 알림
 *
 * 같은 message type ('companyAlignmentCard') 안에서 `kind` 필드로 4 모드를
 * discriminate. 옛 코드는 sidebarProvider 의 3 곳에서 inline 으로 만들었음.
 */

export function buildAlignmentAutoProceedPayload(contract: RequirementContract, reachedLimit: boolean) {
    return {
        type: 'companyAlignmentCard' as const,
        value: { kind: 'auto-proceed' as const, contract, reachedLimit },
    };
}

export function buildAlignmentAskPayload(
    kind: 'questions' | 'confirm',
    contract: RequirementContract,
    roundsAsked: number,
    roundsLimit: number,
) {
    return {
        type: 'companyAlignmentCard' as const,
        value: { kind, contract, roundsAsked, roundsLimit },
    };
}

export function buildAlignmentCancelledPayload() {
    return {
        type: 'companyAlignmentCard' as const,
        value: { kind: 'cancelled' as const },
    };
}
