/**
 * Billing Validation Schemas
 *
 * Zod schemas for validating billing API inputs.
 * Used for type-safe API validation.
 */
import { z } from 'zod';
export declare const planTypeSchema: z.ZodEnum<{
    free: "free";
    paid: "paid";
    enterprise: "enterprise";
}>;
export declare const planVisibilitySchema: z.ZodEnum<{
    public: "public";
    hidden: "hidden";
    invite_only: "invite_only";
}>;
export declare const subscriptionStatusSchema: z.ZodEnum<{
    active: "active";
    expired: "expired";
    paused: "paused";
    trialing: "trialing";
    past_due: "past_due";
    canceled: "canceled";
}>;
export declare const paymentProviderSchema: z.ZodEnum<{
    stripe: "stripe";
    polar: "polar";
}>;
export declare const billingEventTypeSchema: z.ZodEnum<{
    payment: "payment";
    refund: "refund";
    invoice: "invoice";
    credit: "credit";
}>;
export declare const billingEventStatusSchema: z.ZodEnum<{
    pending: "pending";
    succeeded: "succeeded";
    failed: "failed";
}>;
export declare const createPlanSchema: z.ZodObject<{
    slug: z.ZodString;
    name: z.ZodString;
    description: z.ZodOptional<z.ZodString>;
    type: z.ZodDefault<z.ZodEnum<{
        free: "free";
        paid: "paid";
        enterprise: "enterprise";
    }>>;
    visibility: z.ZodDefault<z.ZodEnum<{
        public: "public";
        hidden: "hidden";
        invite_only: "invite_only";
    }>>;
    priceMonthly: z.ZodOptional<z.ZodNumber>;
    priceYearly: z.ZodOptional<z.ZodNumber>;
    currency: z.ZodDefault<z.ZodString>;
    trialDays: z.ZodDefault<z.ZodNumber>;
    features: z.ZodDefault<z.ZodArray<z.ZodString>>;
    limits: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodNumber>>;
    metadata: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
    sortOrder: z.ZodDefault<z.ZodNumber>;
}, z.core.$strip>;
export declare const updatePlanSchema: z.ZodObject<{
    slug: z.ZodOptional<z.ZodString>;
    name: z.ZodOptional<z.ZodString>;
    description: z.ZodOptional<z.ZodOptional<z.ZodString>>;
    type: z.ZodOptional<z.ZodDefault<z.ZodEnum<{
        free: "free";
        paid: "paid";
        enterprise: "enterprise";
    }>>>;
    visibility: z.ZodOptional<z.ZodDefault<z.ZodEnum<{
        public: "public";
        hidden: "hidden";
        invite_only: "invite_only";
    }>>>;
    priceMonthly: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
    priceYearly: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
    currency: z.ZodOptional<z.ZodDefault<z.ZodString>>;
    trialDays: z.ZodOptional<z.ZodDefault<z.ZodNumber>>;
    features: z.ZodOptional<z.ZodDefault<z.ZodArray<z.ZodString>>>;
    limits: z.ZodOptional<z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodNumber>>>;
    metadata: z.ZodOptional<z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
    sortOrder: z.ZodOptional<z.ZodDefault<z.ZodNumber>>;
}, z.core.$strip>;
export declare const createSubscriptionSchema: z.ZodObject<{
    teamId: z.ZodString;
    userId: z.ZodOptional<z.ZodString>;
    planId: z.ZodString;
    status: z.ZodDefault<z.ZodEnum<{
        active: "active";
        expired: "expired";
        paused: "paused";
        trialing: "trialing";
        past_due: "past_due";
        canceled: "canceled";
    }>>;
    currentPeriodStart: z.ZodOptional<z.ZodString>;
    currentPeriodEnd: z.ZodOptional<z.ZodString>;
    trialEndsAt: z.ZodOptional<z.ZodString>;
}, z.core.$strip>;
export declare const updateSubscriptionSchema: z.ZodObject<{
    status: z.ZodOptional<z.ZodEnum<{
        active: "active";
        expired: "expired";
        paused: "paused";
        trialing: "trialing";
        past_due: "past_due";
        canceled: "canceled";
    }>>;
    planId: z.ZodOptional<z.ZodString>;
    cancelAtPeriodEnd: z.ZodOptional<z.ZodBoolean>;
}, z.core.$strip>;
export declare const trackUsageSchema: z.ZodObject<{
    limitSlug: z.ZodString;
    delta: z.ZodNumber;
    action: z.ZodOptional<z.ZodString>;
    resourceType: z.ZodOptional<z.ZodString>;
    resourceId: z.ZodOptional<z.ZodString>;
    metadata: z.ZodDefault<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
}, z.core.$strip>;
export declare const createBillingEventSchema: z.ZodObject<{
    subscriptionId: z.ZodString;
    type: z.ZodEnum<{
        payment: "payment";
        refund: "refund";
        invoice: "invoice";
        credit: "credit";
    }>;
    status: z.ZodDefault<z.ZodEnum<{
        pending: "pending";
        succeeded: "succeeded";
        failed: "failed";
    }>>;
    amount: z.ZodNumber;
    currency: z.ZodDefault<z.ZodString>;
    externalPaymentId: z.ZodOptional<z.ZodString>;
    invoiceUrl: z.ZodOptional<z.ZodString>;
    receiptUrl: z.ZodOptional<z.ZodString>;
    metadata: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
}, z.core.$strip>;
export type CreatePlanInput = z.infer<typeof createPlanSchema>;
export type UpdatePlanInput = z.infer<typeof updatePlanSchema>;
export type CreateSubscriptionInput = z.infer<typeof createSubscriptionSchema>;
export type UpdateSubscriptionInput = z.infer<typeof updateSubscriptionSchema>;
export type TrackUsageInput = z.infer<typeof trackUsageSchema>;
export type CreateBillingEventInput = z.infer<typeof createBillingEventSchema>;
//# sourceMappingURL=schema.d.ts.map