/**
 * Proposal expiry shared types — proposal-expiry-deadline (wave-12).
 */
import { z } from 'zod'

// ── Countdown variant ────────────────────────────────────────────────────────

export type ProposalExpiryVariant = 'none' | 'amber' | 'red' | 'today' | 'expired'

export interface ProposalCountdown {
  variant: ProposalExpiryVariant
  /** days remaining (≥0) or days since expiry (<0); null when variant='none' */
  daysRemaining: number | null
  expiresAt: string | null
}

// ── API bodies ────────────────────────────────────────────────────────────────

/** POST /api/proposals/:id/extend */
export const extendProposalBodySchema = z.object({
  expires_at: z.string().datetime({ offset: true }).optional(),
  resend: z.boolean().optional().default(false),
})

export type ExtendProposalBody = z.infer<typeof extendProposalBodySchema>

/** PUT /api/settings/proposals */
export const proposalDefaultsBodySchema = z.object({
  proposal_default_valid_days: z.number().int().min(1).max(3650).nullable(),
})

export type ProposalDefaultsBody = z.infer<typeof proposalDefaultsBodySchema>

/** GET /api/settings/proposals response */
export interface ProposalDefaultsResponse {
  proposal_default_valid_days: number | null
}
