import * as React from 'react';
import { PageSpeedFormConfig } from '@page-speed/forms/integration';
import { f as SectionBackground } from './community-initiatives-DmVsuoHE.js';
import 'react/jsx-runtime';
import './blocks-XLPGq8A5.js';
import 'class-variance-authority';
import './button-variants-CdNtNOuP.js';
import 'class-variance-authority/types';

interface OfferModalNewsletterDiscountProps {
    /**
     * Main title content for the offer
     */
    title?: React.ReactNode;
    /**
     * Placeholder text for the email input
     */
    emailPlaceholder?: string;
    /**
     * Text/content for the subscribe button
     */
    buttonText?: React.ReactNode;
    /**
     * Text/content for the close button
     */
    closeButtonText?: React.ReactNode;
    /**
     * Custom slot for the close button (overrides default close button)
     */
    closeButtonSlot?: React.ReactNode;
    /**
     * Custom slot for the form (overrides default form)
     */
    formSlot?: React.ReactNode;
    /**
     * Custom slot for the header area (overrides title)
     */
    headerSlot?: React.ReactNode;
    /**
     * Whether the dialog is open (controlled mode)
     */
    open?: boolean;
    /**
     * Callback when the dialog open state changes
     */
    onOpenChange?: (open: boolean) => void;
    /**
     * Whether the dialog is open by default (uncontrolled mode)
     */
    defaultOpen?: boolean;
    /**
     * Whether clicking outside closes the dialog
     */
    closeOnOutsideClick?: boolean;
    /**
     * Optional custom submission handler for maximum flexibility.
     *
     * Use this when you need complete control over the submission logic,
     * such as custom API calls, analytics tracking, or multi-step workflows.
     *
     * Can be used alone or in combination with `formConfig` for hybrid approaches.
     *
     * @example
     * onSubmit={async (email) => {
     *   await fetch("/api/subscribe", {
     *     method: "POST",
     *     body: JSON.stringify({ email, discount: "35OFF" })
     *   });
     * }}
     */
    onSubmit?: (email: string) => void | Promise<void>;
    /**
     * Optional form submission configuration.
     *
     * **Universal Usage**: Works with ANY REST API endpoint. Simply provide an `endpoint` URL
     * and the form will submit to it in JSON format.
     *
     * @example
     * // Works with any API
     * formConfig={{ endpoint: "https://api.mysite.com/subscribe", format: "json" }}
     *
     * @example
     * // With custom headers (e.g., authentication)
     * formConfig={{
     *   endpoint: "/api/newsletter",
     *   headers: { "Authorization": "Bearer token123" }
     * }}
     *
     * **Note**: The `apiKey`, `contactCategoryToken`, and other platform-specific fields
     * are OPTIONAL and only needed when integrating with DashTrack's Rails backend.
     * For generic REST APIs, just use `endpoint`, `method`, `format`, and `headers`.
     *
     * See `FORMS_INTEGRATION_GUIDE.md` for complete examples with Next.js, React, and more.
     */
    formConfig?: PageSpeedFormConfig;
    /**
     * Optional success callback invoked after successful submission.
     *
     * Called after `formConfig` submission and/or `onSubmit` completes successfully.
     * Use for showing success messages, redirecting, analytics tracking, etc.
     */
    onSuccess?: (data: unknown) => void;
    /**
     * Optional error callback invoked if submission fails.
     *
     * Receives the error object for custom error handling, logging, or user notifications.
     */
    onError?: (error: Error) => void;
    /**
     * Additional CSS classes for the dialog content wrapper
     */
    className?: string;
    /**
     * Additional CSS classes for the content area
     */
    contentClassName?: string;
    /**
     * Additional CSS classes for the header
     */
    headerClassName?: string;
    /**
     * Additional CSS classes for the title
     */
    titleClassName?: string;
    /**
     * Additional CSS classes for the form
     */
    formClassName?: string;
    /**
     * Additional CSS classes for the email input
     */
    inputClassName?: string;
    /**
     * Additional CSS classes for the submit button
     */
    submitClassName?: string;
    /**
     * Additional CSS classes for the close button
     */
    closeClassName?: string;
    /**
     * Background style variant for the section
     * @default "default"
     */
    background?: SectionBackground;
}
/**
 * OfferModalNewsletterDiscount - A compact newsletter signup modal positioned at the bottom-right
 * of the screen. Features a clean design with a close button, compelling headline, email input,
 * and subscribe CTA. Perfect for e-commerce sites offering first-purchase discounts or newsletter
 * signup incentives.
 *
 * @example
 * ```tsx
 * <OfferModalNewsletterDiscount
 *   title="Join our newsletter and enjoy 35% off your first order"
 *   buttonText="Subscribe"
 *   onSubmit={(email) => console.log('Subscribed:', email)}
 * />
 * ```
 */
declare function OfferModalNewsletterDiscount({ title, emailPlaceholder, buttonText, closeButtonText, closeButtonSlot, formSlot, headerSlot, open, onOpenChange, defaultOpen, closeOnOutsideClick, onSubmit, formConfig, onSuccess, onError, className, contentClassName, headerClassName, titleClassName, formClassName, inputClassName, submitClassName, closeClassName, background, }: OfferModalNewsletterDiscountProps): React.JSX.Element;

export { OfferModalNewsletterDiscount, type OfferModalNewsletterDiscountProps };
