import React, { ReactNode } from 'react';
import { IPurchaseGiftCardRequest, IPurchaseGiftCardResponse } from '@roomstay/core';
import { PurchaseGiftCardConfig } from './PurchaseGiftCardEngine';
import z from 'zod';
export declare const PurchaseFormSchema: z.ZodObject<{
    companyId: z.ZodNumber;
    amount: z.ZodPipe<z.ZodTransform<unknown, unknown>, z.ZodType<number, unknown, z.core.$ZodTypeInternals<number, unknown>>>;
    giverFirstName: z.ZodString;
    giverLastName: z.ZodString;
    giverEmail: z.ZodEmail;
    giverPhone: z.ZodString;
    giverAddress: z.ZodObject<{
        address1: z.ZodString;
        address2: z.ZodOptional<z.ZodString>;
        city: z.ZodString;
        state: z.ZodOptional<z.ZodString>;
        postcode: z.ZodOptional<z.ZodString>;
        country: z.ZodString;
    }, z.core.$strip>;
    cardHolder: z.ZodString;
    recipientFirstName: z.ZodOptional<z.ZodNullable<z.ZodString>>;
    recipientLastName: z.ZodOptional<z.ZodNullable<z.ZodString>>;
    recipientEmail: z.ZodOptional<z.ZodNullable<z.ZodEmail>>;
    recipientPhone: z.ZodOptional<z.ZodNullable<z.ZodString>>;
    sendViaEmail: z.ZodDefault<z.ZodBoolean>;
    message: z.ZodOptional<z.ZodNullable<z.ZodString>>;
    payment: z.ZodOptional<z.ZodObject<{
        cardHolder: z.ZodString;
        cardNumberToken: z.ZodString;
        cardExpiry: z.ZodString;
        cardCvcToken: z.ZodString;
    }, z.core.$strip>>;
    acceptTerms: z.ZodLiteral<true>;
}, z.core.$strip>;
export type PurchaseForm = IPurchaseGiftCardRequest & {
    isForMyself: boolean;
    acceptTerms: boolean;
    optInToMarketing: boolean;
};
interface PurchaseGiftCardContextType {
    config: PurchaseGiftCardConfig;
    payload: PurchaseForm;
    setPayload: (data: PurchaseForm) => void;
    isLoading: boolean;
    setIsLoading: (loading: boolean) => void;
    countries: string[];
    isComplete: boolean;
    result?: IPurchaseGiftCardResponse;
    setResult: (result: IPurchaseGiftCardResponse) => void;
}
export declare const usePurchaseGiftCard: () => PurchaseGiftCardContextType;
type PurchaseGiftCardProviderProps = {
    config: PurchaseGiftCardConfig;
    children: ReactNode;
};
export declare const PurchaseGiftCardProvider: React.FC<PurchaseGiftCardProviderProps>;
export {};
