export type ResolutionStatus = 'yes' | 'no' | 'partially' export type SatisfactionRating = 1 | 2 | 3 | 4 | 5 export interface ResolutionUser { id?: string email?: string name?: string } export interface ResolutionMetadata { url: string timestamp: string viewport: { width: number; height: number } userAgent: string /** Time in ms from ticket creation to resolution (if ticketId provided) */ timeToResolution?: number } export interface ResolutionData { /** Whether the issue was resolved */ resolved: ResolutionStatus /** Satisfaction rating 1-5 */ satisfaction: SatisfactionRating /** Optional feedback on what could have been better */ feedback?: string /** If not resolved, what's still wrong */ stillNeedsHelp?: string /** Whether the user wants a follow-up */ wantsFollowUp?: boolean /** Reference to original support ticket/interaction */ ticketId?: string /** User information */ user?: ResolutionUser /** App-specific context */ context?: Record /** Auto-captured metadata */ metadata?: ResolutionMetadata } export interface ResolutionProps { /** Display variant */ variant?: 'popover' | 'modal' /** Popover position relative to trigger */ side?: 'top' | 'bottom' | 'left' | 'right' /** Trigger button label */ triggerLabel?: string /** Dialog/popover title */ title?: string /** Reference to original support ticket/interaction */ ticketId?: string /** Show follow-up checkbox */ showFollowUp?: boolean /** User information for attribution */ user?: ResolutionUser /** App-specific context */ context?: Record /** Auto-capture URL, timestamp, viewport, userAgent */ captureMetadata?: boolean /** Callback when resolution submitted (takes precedence over apiEndpoint) */ onSubmit?: (data: ResolutionData) => Promise | void /** API endpoint to POST resolution data to */ apiEndpoint?: string /** Submit button label */ submitLabel?: string /** Additional class for trigger button */ className?: string }