import { SignupFormProps, PreferencesFormProps, Subscriber } from './types.cjs';
import React from 'react';
import 'payload';

declare const NewsletterForm: React.FC<SignupFormProps>;
declare function createNewsletterForm(defaultProps: Partial<SignupFormProps>): React.FC<SignupFormProps>;

declare const PreferencesForm: React.FC<PreferencesFormProps>;
declare function createPreferencesForm(defaultProps: Partial<PreferencesFormProps>): React.FC<PreferencesFormProps>;

interface MagicLinkVerifyProps {
    token?: string;
    onSuccess?: (sessionToken: string, subscriber: any) => void;
    onError?: (error: Error) => void;
    apiEndpoint?: string;
    className?: string;
    styles?: {
        container?: React.CSSProperties;
        heading?: React.CSSProperties;
        message?: React.CSSProperties;
        error?: React.CSSProperties;
        button?: React.CSSProperties;
    };
    labels?: {
        verifying?: string;
        success?: string;
        error?: string;
        expired?: string;
        invalid?: string;
        redirecting?: string;
        tryAgain?: string;
    };
}
declare const MagicLinkVerify: React.FC<MagicLinkVerifyProps>;
declare function createMagicLinkVerify(defaultProps: Partial<MagicLinkVerifyProps>): React.FC<MagicLinkVerifyProps>;

interface UseNewsletterAuthOptions {
    sessionTokenKey?: string;
    apiEndpoint?: string;
}
interface UseNewsletterAuthReturn {
    subscriber: Subscriber | null;
    loading: boolean;
    error: Error | null;
    isAuthenticated: boolean;
    login: (token: string) => Promise<void>;
    logout: () => void;
    refreshSubscriber: () => Promise<void>;
}
declare function useNewsletterAuth(options?: UseNewsletterAuthOptions): UseNewsletterAuthReturn;

export { MagicLinkVerify, type MagicLinkVerifyProps, NewsletterForm, PreferencesForm, PreferencesFormProps, SignupFormProps, Subscriber, type UseNewsletterAuthOptions, type UseNewsletterAuthReturn, createMagicLinkVerify, createNewsletterForm, createPreferencesForm, useNewsletterAuth };
