import { type InteractiveIslandProps } from '../../../contracts/islands';
import { type NewsletterFieldDef, type NewsletterPreset } from './newsletter-form.types';
export type NewsletterFormSourceProps = Readonly<{
    siteId?: string;
    apiBaseUrl?: string;
    listId?: string | null;
    preset?: NewsletterPreset;
    includePhone?: boolean;
    buttonLabel?: string | null;
    successMessage?: string | null;
    privacyNote?: string | null;
    tags?: string | null;
    spamProtectionEnabled?: boolean;
    className?: string | null;
}>;
export type NewsletterFormDisplay = Readonly<{
    kind: 'newsletter-form';
    className: string | null;
    buttonLabel: string;
    successMessage: string | null;
    privacyNote: string | null;
    fields: readonly NewsletterFieldDef[];
}>;
export type NewsletterFormHydration = Readonly<{
    listId?: string | null;
    preset: NewsletterPreset;
    includePhone: boolean;
    tags?: string | null;
    spamProtectionEnabled?: boolean;
}>;
type NewsletterIslandMeta = Readonly<{
    siteId?: string;
    apiBaseUrl?: string;
}>;
export declare function buildNewsletterDisplay(source: NewsletterFormSourceProps): NewsletterFormDisplay;
export type NewsletterFormInteractiveIslandProps = InteractiveIslandProps<NewsletterIslandMeta, 'newsletter-form', typeof newsletterFormBlockRuntime>;
export declare const newsletterFormBlockRuntime: Readonly<{
    kind: "progressive";
    buildRender: (source: Readonly<{
        siteId?: string;
        apiBaseUrl?: string;
        listId?: string | null;
        preset?: NewsletterPreset;
        includePhone?: boolean;
        buttonLabel?: string | null;
        successMessage?: string | null;
        privacyNote?: string | null;
        tags?: string | null;
        spamProtectionEnabled?: boolean;
        className?: string | null;
    }>) => Readonly<{
        display: Readonly<{
            kind: "newsletter-form";
            className: string | null;
            buttonLabel: string;
            successMessage: string | null;
            privacyNote: string | null;
            fields: readonly NewsletterFieldDef[];
        }>;
        hydration: Readonly<{
            listId?: string | null;
            preset: NewsletterPreset;
            includePhone: boolean;
            tags?: string | null;
            spamProtectionEnabled?: boolean;
        }>;
    }>;
    contracts: Readonly<{
        source: Readonly<{
            encode: (value: Readonly<{
                siteId?: string;
                apiBaseUrl?: string;
                listId?: string | null;
                preset?: NewsletterPreset;
                includePhone?: boolean;
                buttonLabel?: string | null;
                successMessage?: string | null;
                privacyNote?: string | null;
                tags?: string | null;
                spamProtectionEnabled?: boolean;
                className?: string | null;
            }>) => unknown;
            decode: (input: unknown) => import("../../../contracts").DecodeResult<Readonly<{
                siteId?: string;
                apiBaseUrl?: string;
                listId?: string | null;
                preset?: NewsletterPreset;
                includePhone?: boolean;
                buttonLabel?: string | null;
                successMessage?: string | null;
                privacyNote?: string | null;
                tags?: string | null;
                spamProtectionEnabled?: boolean;
                className?: string | null;
            }>>;
        }>;
        render: Readonly<{
            encode: (value: Readonly<{
                display: Readonly<{
                    kind: "newsletter-form";
                    className: string | null;
                    buttonLabel: string;
                    successMessage: string | null;
                    privacyNote: string | null;
                    fields: readonly NewsletterFieldDef[];
                }>;
                hydration: Readonly<{
                    listId?: string | null;
                    preset: NewsletterPreset;
                    includePhone: boolean;
                    tags?: string | null;
                    spamProtectionEnabled?: boolean;
                }>;
            }>) => unknown;
            decode: (input: unknown) => import("../../../contracts").DecodeResult<Readonly<{
                display: Readonly<{
                    kind: "newsletter-form";
                    className: string | null;
                    buttonLabel: string;
                    successMessage: string | null;
                    privacyNote: string | null;
                    fields: readonly NewsletterFieldDef[];
                }>;
                hydration: Readonly<{
                    listId?: string | null;
                    preset: NewsletterPreset;
                    includePhone: boolean;
                    tags?: string | null;
                    spamProtectionEnabled?: boolean;
                }>;
            }>>;
        }>;
    }>;
}>;
export declare const newsletterFormInteractiveIslandPropsCodec: Readonly<{
    encode: (value: Readonly<Readonly<{
        siteId?: string;
        apiBaseUrl?: string;
    }> & {
        renderKind: "progressive";
        render: Readonly<{
            mode: "newsletter-form";
        } & Readonly<{
            display: Readonly<{
                kind: "newsletter-form";
                className: string | null;
                buttonLabel: string;
                successMessage: string | null;
                privacyNote: string | null;
                fields: readonly NewsletterFieldDef[];
            }>;
            hydration: Readonly<{
                listId?: string | null;
                preset: NewsletterPreset;
                includePhone: boolean;
                tags?: string | null;
                spamProtectionEnabled?: boolean;
            }>;
        }>>;
    }>) => unknown;
    decode: (input: unknown) => import("../../../contracts").DecodeResult<Readonly<Readonly<{
        siteId?: string;
        apiBaseUrl?: string;
    }> & {
        renderKind: "progressive";
        render: Readonly<{
            mode: "newsletter-form";
        } & Readonly<{
            display: Readonly<{
                kind: "newsletter-form";
                className: string | null;
                buttonLabel: string;
                successMessage: string | null;
                privacyNote: string | null;
                fields: readonly NewsletterFieldDef[];
            }>;
            hydration: Readonly<{
                listId?: string | null;
                preset: NewsletterPreset;
                includePhone: boolean;
                tags?: string | null;
                spamProtectionEnabled?: boolean;
            }>;
        }>>;
    }>>;
}>;
export declare function buildNewsletterFormInteractiveIslandProps(props: NewsletterFormSourceProps): NewsletterFormInteractiveIslandProps;
export {};
