import { A as AutumnError } from '../error-DHbclCVh.js';
import { A as AttachParams, b as AutumnPromise, a as CheckParams, C as CheckResult, T as TrackParams, c as TrackResult, d as CancelParams, e as CancelResult, S as SetupPaymentParams, f as SetupPaymentResult, O as OpenBillingPortalParams, g as CheckoutParams } from '../clientAttachTypes-D0_L-cnv.js';
import { A as AttachResult, C as CheckoutResult } from '../attachTypes-CJ7OSUSn.js';
import { h as CustomerExpandOption, a as Customer, B as BillingPortalResult } from '../cusTypes-DT2ujoSl.js';
import { E as Entity } from '../entTypes-C-7Uoct9.js';
import { C as CreateEntityParams, a as CreateReferralCodeResult, R as RedeemReferralCodeResult } from '../clientEntTypes-BFkleT6a.js';
import { z } from 'zod';
import { SWRConfiguration } from 'swr';
import { A as AllowedParams } from '../handleAllowed-B8TBAzfI.js';

declare const CreateReferralCodeParamsSchema: z.ZodObject<{
    programId: z.ZodString;
}, "strip", z.ZodTypeAny, {
    programId: string;
}, {
    programId: string;
}>;
type CreateReferralCodeParams = z.infer<typeof CreateReferralCodeParamsSchema>;
declare const RedeemReferralCodeParamsSchema: z.ZodObject<{
    code: z.ZodString;
}, "strip", z.ZodTypeAny, {
    code: string;
}, {
    code: string;
}>;
type RedeemReferralCodeParams = z.infer<typeof RedeemReferralCodeParamsSchema>;

interface UseCustomerResult {
    customer: Customer | null;
    isLoading: boolean;
    error: AutumnError | null;
    attach: (params: AttachParams) => AutumnPromise<AttachResult>;
    check: (params: CheckParams) => AutumnPromise<CheckResult>;
    track: (params: TrackParams) => AutumnPromise<TrackResult>;
    cancel: (params: CancelParams) => AutumnPromise<CancelResult>;
    setupPayment: (params: SetupPaymentParams) => AutumnPromise<SetupPaymentResult>;
    openBillingPortal: (params?: OpenBillingPortalParams) => AutumnPromise<BillingPortalResult>;
    checkout: (params: CheckoutParams) => AutumnPromise<CheckoutResult>;
    refetch: () => Promise<Customer | null>;
    createEntity: (params: CreateEntityParams | CreateEntityParams[]) => AutumnPromise<Entity | Entity[]>;
    createReferralCode: (params: CreateReferralCodeParams) => AutumnPromise<CreateReferralCodeResult>;
    redeemReferralCode: (params: RedeemReferralCodeParams) => AutumnPromise<RedeemReferralCodeResult>;
    allowed: (params: AllowedParams) => boolean;
}
interface UseCustomerParams {
    errorOnNotFound?: boolean;
    expand?: CustomerExpandOption[];
    swrConfig?: SWRConfiguration;
}

declare const useCustomer: (params?: UseCustomerParams) => UseCustomerResult;

export { useCustomer };
