Checkout events and errors
Register handlers before mounting Checkout.
Authentication challenges and wallet redirects are handled internally and are not public result states.
onCheckoutError receives a LynqError with a display-safe message, stable code, and retryable flag. Payment declines arrive through onPaymentResult, not onCheckoutError.