import { z } from 'zod';
import { type InteractiveIslandProps } from '../../../contracts/islands';
export declare const publicGiftingOffersResponseSchema: z.ZodObject<{
    currency: z.ZodString;
    giftCards: z.ZodArray<z.ZodObject<{
        id: z.ZodString;
        kind: z.ZodLiteral<"gift_card">;
        title: z.ZodString;
        description: z.ZodNullable<z.ZodString>;
        sortOrder: z.ZodNumber;
        giftCard: z.ZodObject<{
            fixedDenominations: z.ZodArray<z.ZodNumber>;
            customAmountEnabled: z.ZodBoolean;
            customAmountMinCents: z.ZodNumber;
            customAmountMaxCents: z.ZodNumber;
        }, z.core.$strip>;
        voucher: z.ZodNull;
    }, z.core.$strip>>;
    vouchers: z.ZodArray<z.ZodObject<{
        id: z.ZodString;
        kind: z.ZodLiteral<"voucher">;
        title: z.ZodString;
        description: z.ZodNullable<z.ZodString>;
        sortOrder: z.ZodNumber;
        giftCard: z.ZodNull;
        voucher: z.ZodObject<{
            purchaseAmountCents: z.ZodNumber;
        }, z.core.$strip>;
    }, z.core.$strip>>;
}, z.core.$strip>;
export type PublicGiftingOffersResponse = z.infer<typeof publicGiftingOffersResponseSchema>;
export type GiftingControllerProps = Readonly<{
    className?: string | null;
    heading?: string | null;
    intro?: string | null;
    giftCardsHeading?: string | null;
    vouchersHeading?: string | null;
    emptyStateText?: string | null;
    checkoutButtonText?: string | null;
    successMessage?: string | null;
}>;
export type GiftingSourceProps = GiftingControllerProps & Readonly<{
    siteId?: string;
    apiBaseUrl?: string;
    offers?: PublicGiftingOffersResponse | null;
}>;
export type GiftingDisplay = Readonly<{
    kind: 'gifting';
    state: 'ready';
    className: string | null;
    heading: string;
    intro: string | null;
    giftCardsHeading: string;
    vouchersHeading: string;
    emptyStateText: string;
}>;
export type GiftingHydration = Readonly<{
    offers: PublicGiftingOffersResponse | null;
    checkoutButtonText: string;
    successMessage: string;
}>;
type GiftingIslandMeta = Readonly<{
    siteId?: string;
    apiBaseUrl?: string;
}>;
export declare function buildGiftingDisplay(source: GiftingSourceProps): GiftingDisplay;
export type GiftingInteractiveIslandProps = InteractiveIslandProps<GiftingIslandMeta, 'gifting', typeof giftingBlockRuntime>;
export declare const giftingBlockRuntime: Readonly<{
    kind: "client-owned";
    buildRender: (source: GiftingSourceProps) => Readonly<{
        display: Readonly<{
            kind: "gifting";
            state: "ready";
            className: string | null;
            heading: string;
            intro: string | null;
            giftCardsHeading: string;
            vouchersHeading: string;
            emptyStateText: string;
        }>;
        hydration: Readonly<{
            offers: PublicGiftingOffersResponse | null;
            checkoutButtonText: string;
            successMessage: string;
        }>;
    }>;
    contracts: Readonly<{
        source: Readonly<{
            encode: (value: GiftingSourceProps) => unknown;
            decode: (input: unknown) => import("../../../contracts").DecodeResult<GiftingSourceProps>;
        }>;
        render: Readonly<{
            encode: (value: Readonly<{
                display: Readonly<{
                    kind: "gifting";
                    state: "ready";
                    className: string | null;
                    heading: string;
                    intro: string | null;
                    giftCardsHeading: string;
                    vouchersHeading: string;
                    emptyStateText: string;
                }>;
                hydration: Readonly<{
                    offers: PublicGiftingOffersResponse | null;
                    checkoutButtonText: string;
                    successMessage: string;
                }>;
            }>) => unknown;
            decode: (input: unknown) => import("../../../contracts").DecodeResult<Readonly<{
                display: Readonly<{
                    kind: "gifting";
                    state: "ready";
                    className: string | null;
                    heading: string;
                    intro: string | null;
                    giftCardsHeading: string;
                    vouchersHeading: string;
                    emptyStateText: string;
                }>;
                hydration: Readonly<{
                    offers: PublicGiftingOffersResponse | null;
                    checkoutButtonText: string;
                    successMessage: string;
                }>;
            }>>;
        }>;
    }>;
}>;
export declare const giftingInteractiveIslandPropsCodec: Readonly<{
    encode: (value: Readonly<Readonly<{
        siteId?: string;
        apiBaseUrl?: string;
    }> & {
        renderKind: "client-owned";
        render: Readonly<{
            mode: "gifting";
        } & Readonly<{
            display: Readonly<{
                kind: "gifting";
                state: "ready";
                className: string | null;
                heading: string;
                intro: string | null;
                giftCardsHeading: string;
                vouchersHeading: string;
                emptyStateText: string;
            }>;
            hydration: Readonly<{
                offers: PublicGiftingOffersResponse | null;
                checkoutButtonText: string;
                successMessage: string;
            }>;
        }>>;
    }>) => unknown;
    decode: (input: unknown) => import("../../../contracts").DecodeResult<Readonly<Readonly<{
        siteId?: string;
        apiBaseUrl?: string;
    }> & {
        renderKind: "client-owned";
        render: Readonly<{
            mode: "gifting";
        } & Readonly<{
            display: Readonly<{
                kind: "gifting";
                state: "ready";
                className: string | null;
                heading: string;
                intro: string | null;
                giftCardsHeading: string;
                vouchersHeading: string;
                emptyStateText: string;
            }>;
            hydration: Readonly<{
                offers: PublicGiftingOffersResponse | null;
                checkoutButtonText: string;
                successMessage: string;
            }>;
        }>>;
    }>>;
}>;
export declare function buildGiftingInteractiveIslandProps(props: GiftingSourceProps): GiftingInteractiveIslandProps;
export {};
