import { z } from 'zod';
import Stripe from 'stripe';
/**
 * Base Types
 */
/**
 * Common metadata schema used across all providers
 */
export declare const MetadataSchema: z.ZodRecord<z.ZodString, z.ZodUnion<[z.ZodUnion<[z.ZodUnion<[z.ZodString, z.ZodNumber]>, z.ZodBoolean]>, z.ZodArray<z.ZodString, "many">]>>;
export type Metadata = z.infer<typeof MetadataSchema>;
/**
 * Base product schema shared across all providers
 */
export declare const BaseProductSchema: z.ZodObject<{
    id: z.ZodOptional<z.ZodString>;
    name: z.ZodString;
    description: z.ZodOptional<z.ZodString>;
    metadata: z.ZodDefault<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<[z.ZodUnion<[z.ZodUnion<[z.ZodString, z.ZodNumber]>, z.ZodBoolean]>, z.ZodArray<z.ZodString, "many">]>>>>;
}, "strip", z.ZodTypeAny, {
    name: string;
    metadata: Record<string, string | number | boolean | string[]>;
    id?: string | undefined;
    description?: string | undefined;
}, {
    name: string;
    id?: string | undefined;
    description?: string | undefined;
    metadata?: Record<string, string | number | boolean | string[]> | undefined;
}>;
export type BaseProduct = z.infer<typeof BaseProductSchema>;
/**
 * Common price intervals
 */
export declare const PriceIntervalSchema: z.ZodEnum<["day", "week", "month", "year"]>;
export type PriceInterval = z.infer<typeof PriceIntervalSchema>;
/**
 * Base recurring price schema
 */
export declare const BaseRecurringSchema: z.ZodObject<{
    interval: z.ZodEnum<["day", "week", "month", "year"]>;
    intervalCount: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
}, "strip", z.ZodTypeAny, {
    interval: "day" | "week" | "month" | "year";
    intervalCount: number;
}, {
    interval: "day" | "week" | "month" | "year";
    intervalCount?: number | undefined;
}>;
export type BaseRecurring = z.infer<typeof BaseRecurringSchema>;
/**
 * Base price schema shared across all providers
 */
export declare const BasePriceSchema: z.ZodObject<{
    id: z.ZodOptional<z.ZodString>;
    name: z.ZodString;
    unitAmount: z.ZodNumber;
    currency: z.ZodString;
    type: z.ZodDefault<z.ZodEnum<["one_time", "recurring"]>>;
    recurring: z.ZodOptional<z.ZodObject<{
        interval: z.ZodEnum<["day", "week", "month", "year"]>;
        intervalCount: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
    }, "strip", z.ZodTypeAny, {
        interval: "day" | "week" | "month" | "year";
        intervalCount: number;
    }, {
        interval: "day" | "week" | "month" | "year";
        intervalCount?: number | undefined;
    }>>;
    active: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
    productId: z.ZodOptional<z.ZodString>;
    metadata: z.ZodDefault<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<[z.ZodUnion<[z.ZodUnion<[z.ZodString, z.ZodNumber]>, z.ZodBoolean]>, z.ZodArray<z.ZodString, "many">]>>>>;
}, "strip", z.ZodTypeAny, {
    type: "one_time" | "recurring";
    name: string;
    metadata: Record<string, string | number | boolean | string[]>;
    unitAmount: number;
    currency: string;
    active: boolean;
    id?: string | undefined;
    recurring?: {
        interval: "day" | "week" | "month" | "year";
        intervalCount: number;
    } | undefined;
    productId?: string | undefined;
}, {
    name: string;
    unitAmount: number;
    currency: string;
    type?: "one_time" | "recurring" | undefined;
    id?: string | undefined;
    metadata?: Record<string, string | number | boolean | string[]> | undefined;
    recurring?: {
        interval: "day" | "week" | "month" | "year";
        intervalCount?: number | undefined;
    } | undefined;
    active?: boolean | undefined;
    productId?: string | undefined;
}>;
export type BasePrice = z.infer<typeof BasePriceSchema>;
/**
 * Stripe Provider Schemas
 */
/**
 * Stripe-specific product schema
 */
export declare const StripeProductSchema: z.ZodObject<z.objectUtil.extendShape<{
    id: z.ZodOptional<z.ZodString>;
    name: z.ZodString;
    description: z.ZodOptional<z.ZodString>;
    metadata: z.ZodDefault<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<[z.ZodUnion<[z.ZodUnion<[z.ZodString, z.ZodNumber]>, z.ZodBoolean]>, z.ZodArray<z.ZodString, "many">]>>>>;
}, {
    features: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
    highlight: z.ZodOptional<z.ZodBoolean>;
    provider: z.ZodLiteral<"stripe">;
    key: z.ZodOptional<z.ZodString>;
}>, "strip", z.ZodTypeAny, {
    name: string;
    metadata: Record<string, string | number | boolean | string[]>;
    provider: "stripe";
    id?: string | undefined;
    description?: string | undefined;
    features?: string[] | undefined;
    highlight?: boolean | undefined;
    key?: string | undefined;
}, {
    name: string;
    provider: "stripe";
    id?: string | undefined;
    description?: string | undefined;
    metadata?: Record<string, string | number | boolean | string[]> | undefined;
    features?: string[] | undefined;
    highlight?: boolean | undefined;
    key?: string | undefined;
}>;
export type StripeProduct = z.infer<typeof StripeProductSchema>;
/**
 * Stripe-specific recurring schema
 */
export declare const StripeRecurringSchema: z.ZodObject<z.objectUtil.extendShape<{
    interval: z.ZodEnum<["day", "week", "month", "year"]>;
    intervalCount: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
}, {
    interval: z.ZodEnum<["day", "week", "month", "year"]>;
    usageType: z.ZodOptional<z.ZodEnum<["licensed", "metered"]>>;
    aggregateUsage: z.ZodOptional<z.ZodEnum<["sum", "last_during_period", "last_ever", "max"]>>;
    trialPeriodDays: z.ZodOptional<z.ZodNumber>;
}>, "strip", z.ZodTypeAny, {
    interval: "day" | "week" | "month" | "year";
    intervalCount: number;
    usageType?: "licensed" | "metered" | undefined;
    aggregateUsage?: "sum" | "last_during_period" | "last_ever" | "max" | undefined;
    trialPeriodDays?: number | undefined;
}, {
    interval: "day" | "week" | "month" | "year";
    intervalCount?: number | undefined;
    usageType?: "licensed" | "metered" | undefined;
    aggregateUsage?: "sum" | "last_during_period" | "last_ever" | "max" | undefined;
    trialPeriodDays?: number | undefined;
}>;
export type StripeRecurring = z.infer<typeof StripeRecurringSchema>;
/**
 * Stripe-specific price schema
 */
export declare const StripePriceSchema: z.ZodObject<z.objectUtil.extendShape<{
    id: z.ZodOptional<z.ZodString>;
    name: z.ZodString;
    unitAmount: z.ZodNumber;
    currency: z.ZodString;
    type: z.ZodDefault<z.ZodEnum<["one_time", "recurring"]>>;
    recurring: z.ZodOptional<z.ZodObject<{
        interval: z.ZodEnum<["day", "week", "month", "year"]>;
        intervalCount: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
    }, "strip", z.ZodTypeAny, {
        interval: "day" | "week" | "month" | "year";
        intervalCount: number;
    }, {
        interval: "day" | "week" | "month" | "year";
        intervalCount?: number | undefined;
    }>>;
    active: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
    productId: z.ZodOptional<z.ZodString>;
    metadata: z.ZodDefault<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<[z.ZodUnion<[z.ZodUnion<[z.ZodString, z.ZodNumber]>, z.ZodBoolean]>, z.ZodArray<z.ZodString, "many">]>>>>;
}, {
    nickname: z.ZodString;
    recurring: z.ZodOptional<z.ZodObject<z.objectUtil.extendShape<{
        interval: z.ZodEnum<["day", "week", "month", "year"]>;
        intervalCount: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
    }, {
        interval: z.ZodEnum<["day", "week", "month", "year"]>;
        usageType: z.ZodOptional<z.ZodEnum<["licensed", "metered"]>>;
        aggregateUsage: z.ZodOptional<z.ZodEnum<["sum", "last_during_period", "last_ever", "max"]>>;
        trialPeriodDays: z.ZodOptional<z.ZodNumber>;
    }>, "strip", z.ZodTypeAny, {
        interval: "day" | "week" | "month" | "year";
        intervalCount: number;
        usageType?: "licensed" | "metered" | undefined;
        aggregateUsage?: "sum" | "last_during_period" | "last_ever" | "max" | undefined;
        trialPeriodDays?: number | undefined;
    }, {
        interval: "day" | "week" | "month" | "year";
        intervalCount?: number | undefined;
        usageType?: "licensed" | "metered" | undefined;
        aggregateUsage?: "sum" | "last_during_period" | "last_ever" | "max" | undefined;
        trialPeriodDays?: number | undefined;
    }>>;
    provider: z.ZodLiteral<"stripe">;
    key: z.ZodOptional<z.ZodString>;
    taxBehavior: z.ZodOptional<z.ZodEnum<["inclusive", "exclusive", "unspecified"]>>;
    billingScheme: z.ZodOptional<z.ZodEnum<["per_unit", "tiered"]>>;
    productKey: z.ZodOptional<z.ZodString>;
}>, "strip", z.ZodTypeAny, {
    type: "one_time" | "recurring";
    name: string;
    metadata: Record<string, string | number | boolean | string[]>;
    unitAmount: number;
    currency: string;
    active: boolean;
    provider: "stripe";
    nickname: string;
    id?: string | undefined;
    recurring?: {
        interval: "day" | "week" | "month" | "year";
        intervalCount: number;
        usageType?: "licensed" | "metered" | undefined;
        aggregateUsage?: "sum" | "last_during_period" | "last_ever" | "max" | undefined;
        trialPeriodDays?: number | undefined;
    } | undefined;
    productId?: string | undefined;
    key?: string | undefined;
    taxBehavior?: "inclusive" | "exclusive" | "unspecified" | undefined;
    billingScheme?: "per_unit" | "tiered" | undefined;
    productKey?: string | undefined;
}, {
    name: string;
    unitAmount: number;
    currency: string;
    provider: "stripe";
    nickname: string;
    type?: "one_time" | "recurring" | undefined;
    id?: string | undefined;
    metadata?: Record<string, string | number | boolean | string[]> | undefined;
    recurring?: {
        interval: "day" | "week" | "month" | "year";
        intervalCount?: number | undefined;
        usageType?: "licensed" | "metered" | undefined;
        aggregateUsage?: "sum" | "last_during_period" | "last_ever" | "max" | undefined;
        trialPeriodDays?: number | undefined;
    } | undefined;
    active?: boolean | undefined;
    productId?: string | undefined;
    key?: string | undefined;
    taxBehavior?: "inclusive" | "exclusive" | "unspecified" | undefined;
    billingScheme?: "per_unit" | "tiered" | undefined;
    productKey?: string | undefined;
}>;
export type StripePrice = z.infer<typeof StripePriceSchema>;
/**
 * Union types for providers
 */
export declare const ProductSchema: z.ZodDiscriminatedUnion<"provider", [z.ZodObject<z.objectUtil.extendShape<{
    id: z.ZodOptional<z.ZodString>;
    name: z.ZodString;
    description: z.ZodOptional<z.ZodString>;
    metadata: z.ZodDefault<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<[z.ZodUnion<[z.ZodUnion<[z.ZodString, z.ZodNumber]>, z.ZodBoolean]>, z.ZodArray<z.ZodString, "many">]>>>>;
}, {
    features: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
    highlight: z.ZodOptional<z.ZodBoolean>;
    provider: z.ZodLiteral<"stripe">;
    key: z.ZodOptional<z.ZodString>;
}>, "strip", z.ZodTypeAny, {
    name: string;
    metadata: Record<string, string | number | boolean | string[]>;
    provider: "stripe";
    id?: string | undefined;
    description?: string | undefined;
    features?: string[] | undefined;
    highlight?: boolean | undefined;
    key?: string | undefined;
}, {
    name: string;
    provider: "stripe";
    id?: string | undefined;
    description?: string | undefined;
    metadata?: Record<string, string | number | boolean | string[]> | undefined;
    features?: string[] | undefined;
    highlight?: boolean | undefined;
    key?: string | undefined;
}>]>;
export type Product = z.infer<typeof ProductSchema>;
export declare const PriceSchema: z.ZodDiscriminatedUnion<"provider", [z.ZodObject<z.objectUtil.extendShape<{
    id: z.ZodOptional<z.ZodString>;
    name: z.ZodString;
    unitAmount: z.ZodNumber;
    currency: z.ZodString;
    type: z.ZodDefault<z.ZodEnum<["one_time", "recurring"]>>;
    recurring: z.ZodOptional<z.ZodObject<{
        interval: z.ZodEnum<["day", "week", "month", "year"]>;
        intervalCount: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
    }, "strip", z.ZodTypeAny, {
        interval: "day" | "week" | "month" | "year";
        intervalCount: number;
    }, {
        interval: "day" | "week" | "month" | "year";
        intervalCount?: number | undefined;
    }>>;
    active: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
    productId: z.ZodOptional<z.ZodString>;
    metadata: z.ZodDefault<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<[z.ZodUnion<[z.ZodUnion<[z.ZodString, z.ZodNumber]>, z.ZodBoolean]>, z.ZodArray<z.ZodString, "many">]>>>>;
}, {
    nickname: z.ZodString;
    recurring: z.ZodOptional<z.ZodObject<z.objectUtil.extendShape<{
        interval: z.ZodEnum<["day", "week", "month", "year"]>;
        intervalCount: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
    }, {
        interval: z.ZodEnum<["day", "week", "month", "year"]>;
        usageType: z.ZodOptional<z.ZodEnum<["licensed", "metered"]>>;
        aggregateUsage: z.ZodOptional<z.ZodEnum<["sum", "last_during_period", "last_ever", "max"]>>;
        trialPeriodDays: z.ZodOptional<z.ZodNumber>;
    }>, "strip", z.ZodTypeAny, {
        interval: "day" | "week" | "month" | "year";
        intervalCount: number;
        usageType?: "licensed" | "metered" | undefined;
        aggregateUsage?: "sum" | "last_during_period" | "last_ever" | "max" | undefined;
        trialPeriodDays?: number | undefined;
    }, {
        interval: "day" | "week" | "month" | "year";
        intervalCount?: number | undefined;
        usageType?: "licensed" | "metered" | undefined;
        aggregateUsage?: "sum" | "last_during_period" | "last_ever" | "max" | undefined;
        trialPeriodDays?: number | undefined;
    }>>;
    provider: z.ZodLiteral<"stripe">;
    key: z.ZodOptional<z.ZodString>;
    taxBehavior: z.ZodOptional<z.ZodEnum<["inclusive", "exclusive", "unspecified"]>>;
    billingScheme: z.ZodOptional<z.ZodEnum<["per_unit", "tiered"]>>;
    productKey: z.ZodOptional<z.ZodString>;
}>, "strip", z.ZodTypeAny, {
    type: "one_time" | "recurring";
    name: string;
    metadata: Record<string, string | number | boolean | string[]>;
    unitAmount: number;
    currency: string;
    active: boolean;
    provider: "stripe";
    nickname: string;
    id?: string | undefined;
    recurring?: {
        interval: "day" | "week" | "month" | "year";
        intervalCount: number;
        usageType?: "licensed" | "metered" | undefined;
        aggregateUsage?: "sum" | "last_during_period" | "last_ever" | "max" | undefined;
        trialPeriodDays?: number | undefined;
    } | undefined;
    productId?: string | undefined;
    key?: string | undefined;
    taxBehavior?: "inclusive" | "exclusive" | "unspecified" | undefined;
    billingScheme?: "per_unit" | "tiered" | undefined;
    productKey?: string | undefined;
}, {
    name: string;
    unitAmount: number;
    currency: string;
    provider: "stripe";
    nickname: string;
    type?: "one_time" | "recurring" | undefined;
    id?: string | undefined;
    metadata?: Record<string, string | number | boolean | string[]> | undefined;
    recurring?: {
        interval: "day" | "week" | "month" | "year";
        intervalCount?: number | undefined;
        usageType?: "licensed" | "metered" | undefined;
        aggregateUsage?: "sum" | "last_during_period" | "last_ever" | "max" | undefined;
        trialPeriodDays?: number | undefined;
    } | undefined;
    active?: boolean | undefined;
    productId?: string | undefined;
    key?: string | undefined;
    taxBehavior?: "inclusive" | "exclusive" | "unspecified" | undefined;
    billingScheme?: "per_unit" | "tiered" | undefined;
    productKey?: string | undefined;
}>]>;
export type Price = z.infer<typeof PriceSchema>;
/**
 * Configuration schema for all providers
 */
export declare const ConfigSchema: z.ZodObject<{
    products: z.ZodArray<z.ZodDiscriminatedUnion<"provider", [z.ZodObject<z.objectUtil.extendShape<{
        id: z.ZodOptional<z.ZodString>;
        name: z.ZodString;
        description: z.ZodOptional<z.ZodString>;
        metadata: z.ZodDefault<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<[z.ZodUnion<[z.ZodUnion<[z.ZodString, z.ZodNumber]>, z.ZodBoolean]>, z.ZodArray<z.ZodString, "many">]>>>>;
    }, {
        features: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
        highlight: z.ZodOptional<z.ZodBoolean>;
        provider: z.ZodLiteral<"stripe">;
        key: z.ZodOptional<z.ZodString>;
    }>, "strip", z.ZodTypeAny, {
        name: string;
        metadata: Record<string, string | number | boolean | string[]>;
        provider: "stripe";
        id?: string | undefined;
        description?: string | undefined;
        features?: string[] | undefined;
        highlight?: boolean | undefined;
        key?: string | undefined;
    }, {
        name: string;
        provider: "stripe";
        id?: string | undefined;
        description?: string | undefined;
        metadata?: Record<string, string | number | boolean | string[]> | undefined;
        features?: string[] | undefined;
        highlight?: boolean | undefined;
        key?: string | undefined;
    }>]>, "many">;
    prices: z.ZodArray<z.ZodDiscriminatedUnion<"provider", [z.ZodObject<z.objectUtil.extendShape<{
        id: z.ZodOptional<z.ZodString>;
        name: z.ZodString;
        unitAmount: z.ZodNumber;
        currency: z.ZodString;
        type: z.ZodDefault<z.ZodEnum<["one_time", "recurring"]>>;
        recurring: z.ZodOptional<z.ZodObject<{
            interval: z.ZodEnum<["day", "week", "month", "year"]>;
            intervalCount: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
        }, "strip", z.ZodTypeAny, {
            interval: "day" | "week" | "month" | "year";
            intervalCount: number;
        }, {
            interval: "day" | "week" | "month" | "year";
            intervalCount?: number | undefined;
        }>>;
        active: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
        productId: z.ZodOptional<z.ZodString>;
        metadata: z.ZodDefault<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<[z.ZodUnion<[z.ZodUnion<[z.ZodString, z.ZodNumber]>, z.ZodBoolean]>, z.ZodArray<z.ZodString, "many">]>>>>;
    }, {
        nickname: z.ZodString;
        recurring: z.ZodOptional<z.ZodObject<z.objectUtil.extendShape<{
            interval: z.ZodEnum<["day", "week", "month", "year"]>;
            intervalCount: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
        }, {
            interval: z.ZodEnum<["day", "week", "month", "year"]>;
            usageType: z.ZodOptional<z.ZodEnum<["licensed", "metered"]>>;
            aggregateUsage: z.ZodOptional<z.ZodEnum<["sum", "last_during_period", "last_ever", "max"]>>;
            trialPeriodDays: z.ZodOptional<z.ZodNumber>;
        }>, "strip", z.ZodTypeAny, {
            interval: "day" | "week" | "month" | "year";
            intervalCount: number;
            usageType?: "licensed" | "metered" | undefined;
            aggregateUsage?: "sum" | "last_during_period" | "last_ever" | "max" | undefined;
            trialPeriodDays?: number | undefined;
        }, {
            interval: "day" | "week" | "month" | "year";
            intervalCount?: number | undefined;
            usageType?: "licensed" | "metered" | undefined;
            aggregateUsage?: "sum" | "last_during_period" | "last_ever" | "max" | undefined;
            trialPeriodDays?: number | undefined;
        }>>;
        provider: z.ZodLiteral<"stripe">;
        key: z.ZodOptional<z.ZodString>;
        taxBehavior: z.ZodOptional<z.ZodEnum<["inclusive", "exclusive", "unspecified"]>>;
        billingScheme: z.ZodOptional<z.ZodEnum<["per_unit", "tiered"]>>;
        productKey: z.ZodOptional<z.ZodString>;
    }>, "strip", z.ZodTypeAny, {
        type: "one_time" | "recurring";
        name: string;
        metadata: Record<string, string | number | boolean | string[]>;
        unitAmount: number;
        currency: string;
        active: boolean;
        provider: "stripe";
        nickname: string;
        id?: string | undefined;
        recurring?: {
            interval: "day" | "week" | "month" | "year";
            intervalCount: number;
            usageType?: "licensed" | "metered" | undefined;
            aggregateUsage?: "sum" | "last_during_period" | "last_ever" | "max" | undefined;
            trialPeriodDays?: number | undefined;
        } | undefined;
        productId?: string | undefined;
        key?: string | undefined;
        taxBehavior?: "inclusive" | "exclusive" | "unspecified" | undefined;
        billingScheme?: "per_unit" | "tiered" | undefined;
        productKey?: string | undefined;
    }, {
        name: string;
        unitAmount: number;
        currency: string;
        provider: "stripe";
        nickname: string;
        type?: "one_time" | "recurring" | undefined;
        id?: string | undefined;
        metadata?: Record<string, string | number | boolean | string[]> | undefined;
        recurring?: {
            interval: "day" | "week" | "month" | "year";
            intervalCount?: number | undefined;
            usageType?: "licensed" | "metered" | undefined;
            aggregateUsage?: "sum" | "last_during_period" | "last_ever" | "max" | undefined;
            trialPeriodDays?: number | undefined;
        } | undefined;
        active?: boolean | undefined;
        productId?: string | undefined;
        key?: string | undefined;
        taxBehavior?: "inclusive" | "exclusive" | "unspecified" | undefined;
        billingScheme?: "per_unit" | "tiered" | undefined;
        productKey?: string | undefined;
    }>]>, "many">;
}, "strip", z.ZodTypeAny, {
    products: {
        name: string;
        metadata: Record<string, string | number | boolean | string[]>;
        provider: "stripe";
        id?: string | undefined;
        description?: string | undefined;
        features?: string[] | undefined;
        highlight?: boolean | undefined;
        key?: string | undefined;
    }[];
    prices: {
        type: "one_time" | "recurring";
        name: string;
        metadata: Record<string, string | number | boolean | string[]>;
        unitAmount: number;
        currency: string;
        active: boolean;
        provider: "stripe";
        nickname: string;
        id?: string | undefined;
        recurring?: {
            interval: "day" | "week" | "month" | "year";
            intervalCount: number;
            usageType?: "licensed" | "metered" | undefined;
            aggregateUsage?: "sum" | "last_during_period" | "last_ever" | "max" | undefined;
            trialPeriodDays?: number | undefined;
        } | undefined;
        productId?: string | undefined;
        key?: string | undefined;
        taxBehavior?: "inclusive" | "exclusive" | "unspecified" | undefined;
        billingScheme?: "per_unit" | "tiered" | undefined;
        productKey?: string | undefined;
    }[];
}, {
    products: {
        name: string;
        provider: "stripe";
        id?: string | undefined;
        description?: string | undefined;
        metadata?: Record<string, string | number | boolean | string[]> | undefined;
        features?: string[] | undefined;
        highlight?: boolean | undefined;
        key?: string | undefined;
    }[];
    prices: {
        name: string;
        unitAmount: number;
        currency: string;
        provider: "stripe";
        nickname: string;
        type?: "one_time" | "recurring" | undefined;
        id?: string | undefined;
        metadata?: Record<string, string | number | boolean | string[]> | undefined;
        recurring?: {
            interval: "day" | "week" | "month" | "year";
            intervalCount?: number | undefined;
            usageType?: "licensed" | "metered" | undefined;
            aggregateUsage?: "sum" | "last_during_period" | "last_ever" | "max" | undefined;
            trialPeriodDays?: number | undefined;
        } | undefined;
        active?: boolean | undefined;
        productId?: string | undefined;
        key?: string | undefined;
        taxBehavior?: "inclusive" | "exclusive" | "unspecified" | undefined;
        billingScheme?: "per_unit" | "tiered" | undefined;
        productKey?: string | undefined;
    }[];
}>;
export type Config = z.infer<typeof ConfigSchema>;
/**
 * Provider-specific client options
 */
export declare const StripeOptionsSchema: z.ZodObject<{
    secretKey: z.ZodString;
    apiVersion: z.ZodOptional<z.ZodString>;
}, "strip", z.ZodTypeAny, {
    secretKey: string;
    apiVersion?: string | undefined;
}, {
    secretKey: string;
    apiVersion?: string | undefined;
}>;
export type StripeOptions = z.infer<typeof StripeOptionsSchema>;
/**
 * Provider union type
 */
export declare const ProviderOptionsSchema: z.ZodDiscriminatedUnion<"provider", [z.ZodObject<{
    provider: z.ZodLiteral<"stripe">;
    options: z.ZodObject<{
        secretKey: z.ZodString;
        apiVersion: z.ZodOptional<z.ZodString>;
    }, "strip", z.ZodTypeAny, {
        secretKey: string;
        apiVersion?: string | undefined;
    }, {
        secretKey: string;
        apiVersion?: string | undefined;
    }>;
}, "strip", z.ZodTypeAny, {
    options: {
        secretKey: string;
        apiVersion?: string | undefined;
    };
    provider: "stripe";
}, {
    options: {
        secretKey: string;
        apiVersion?: string | undefined;
    };
    provider: "stripe";
}>]>;
export type ProviderOptions = z.infer<typeof ProviderOptionsSchema>;
/**
 * Global options
 */
export declare const PaCOptionsSchema: z.ZodObject<{
    configPath: z.ZodOptional<z.ZodString>;
    providers: z.ZodArray<z.ZodDiscriminatedUnion<"provider", [z.ZodObject<{
        provider: z.ZodLiteral<"stripe">;
        options: z.ZodObject<{
            secretKey: z.ZodString;
            apiVersion: z.ZodOptional<z.ZodString>;
        }, "strip", z.ZodTypeAny, {
            secretKey: string;
            apiVersion?: string | undefined;
        }, {
            secretKey: string;
            apiVersion?: string | undefined;
        }>;
    }, "strip", z.ZodTypeAny, {
        options: {
            secretKey: string;
            apiVersion?: string | undefined;
        };
        provider: "stripe";
    }, {
        options: {
            secretKey: string;
            apiVersion?: string | undefined;
        };
        provider: "stripe";
    }>]>, "many">;
    writeBack: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
    format: z.ZodDefault<z.ZodOptional<z.ZodEnum<["yaml", "json", "ts"]>>>;
}, "strip", z.ZodTypeAny, {
    providers: {
        options: {
            secretKey: string;
            apiVersion?: string | undefined;
        };
        provider: "stripe";
    }[];
    writeBack: boolean;
    format: "yaml" | "json" | "ts";
    configPath?: string | undefined;
}, {
    providers: {
        options: {
            secretKey: string;
            apiVersion?: string | undefined;
        };
        provider: "stripe";
    }[];
    configPath?: string | undefined;
    writeBack?: boolean | undefined;
    format?: "yaml" | "json" | "ts" | undefined;
}>;
export type PaCOptions = z.infer<typeof PaCOptionsSchema>;
/**
 * Generate options
 */
export declare const GenerateOptionsSchema: z.ZodObject<{
    configPath: z.ZodString;
    format: z.ZodDefault<z.ZodOptional<z.ZodEnum<["yaml", "json", "ts"]>>>;
    provider: z.ZodDefault<z.ZodOptional<z.ZodEnum<["stripe"]>>>;
    productTiers: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodString, "many">>>;
    intervals: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodEnum<["month", "year"]>, "many">>>;
    currency: z.ZodDefault<z.ZodOptional<z.ZodString>>;
    includeMetadata: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
    includeFeatures: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
}, "strip", z.ZodTypeAny, {
    currency: string;
    provider: "stripe";
    configPath: string;
    format: "yaml" | "json" | "ts";
    productTiers: string[];
    intervals: ("month" | "year")[];
    includeMetadata: boolean;
    includeFeatures: boolean;
}, {
    configPath: string;
    currency?: string | undefined;
    provider?: "stripe" | undefined;
    format?: "yaml" | "json" | "ts" | undefined;
    productTiers?: string[] | undefined;
    intervals?: ("month" | "year")[] | undefined;
    includeMetadata?: boolean | undefined;
    includeFeatures?: boolean | undefined;
}>;
export type GenerateOptions = z.infer<typeof GenerateOptionsSchema>;
/**
 * Result of synchronization
 */
export declare const SyncResultSchema: z.ZodObject<{
    config: z.ZodObject<{
        products: z.ZodArray<z.ZodDiscriminatedUnion<"provider", [z.ZodObject<z.objectUtil.extendShape<{
            id: z.ZodOptional<z.ZodString>;
            name: z.ZodString;
            description: z.ZodOptional<z.ZodString>;
            metadata: z.ZodDefault<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<[z.ZodUnion<[z.ZodUnion<[z.ZodString, z.ZodNumber]>, z.ZodBoolean]>, z.ZodArray<z.ZodString, "many">]>>>>;
        }, {
            features: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
            highlight: z.ZodOptional<z.ZodBoolean>;
            provider: z.ZodLiteral<"stripe">;
            key: z.ZodOptional<z.ZodString>;
        }>, "strip", z.ZodTypeAny, {
            name: string;
            metadata: Record<string, string | number | boolean | string[]>;
            provider: "stripe";
            id?: string | undefined;
            description?: string | undefined;
            features?: string[] | undefined;
            highlight?: boolean | undefined;
            key?: string | undefined;
        }, {
            name: string;
            provider: "stripe";
            id?: string | undefined;
            description?: string | undefined;
            metadata?: Record<string, string | number | boolean | string[]> | undefined;
            features?: string[] | undefined;
            highlight?: boolean | undefined;
            key?: string | undefined;
        }>]>, "many">;
        prices: z.ZodArray<z.ZodDiscriminatedUnion<"provider", [z.ZodObject<z.objectUtil.extendShape<{
            id: z.ZodOptional<z.ZodString>;
            name: z.ZodString;
            unitAmount: z.ZodNumber;
            currency: z.ZodString;
            type: z.ZodDefault<z.ZodEnum<["one_time", "recurring"]>>;
            recurring: z.ZodOptional<z.ZodObject<{
                interval: z.ZodEnum<["day", "week", "month", "year"]>;
                intervalCount: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
            }, "strip", z.ZodTypeAny, {
                interval: "day" | "week" | "month" | "year";
                intervalCount: number;
            }, {
                interval: "day" | "week" | "month" | "year";
                intervalCount?: number | undefined;
            }>>;
            active: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
            productId: z.ZodOptional<z.ZodString>;
            metadata: z.ZodDefault<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<[z.ZodUnion<[z.ZodUnion<[z.ZodString, z.ZodNumber]>, z.ZodBoolean]>, z.ZodArray<z.ZodString, "many">]>>>>;
        }, {
            nickname: z.ZodString;
            recurring: z.ZodOptional<z.ZodObject<z.objectUtil.extendShape<{
                interval: z.ZodEnum<["day", "week", "month", "year"]>;
                intervalCount: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
            }, {
                interval: z.ZodEnum<["day", "week", "month", "year"]>;
                usageType: z.ZodOptional<z.ZodEnum<["licensed", "metered"]>>;
                aggregateUsage: z.ZodOptional<z.ZodEnum<["sum", "last_during_period", "last_ever", "max"]>>;
                trialPeriodDays: z.ZodOptional<z.ZodNumber>;
            }>, "strip", z.ZodTypeAny, {
                interval: "day" | "week" | "month" | "year";
                intervalCount: number;
                usageType?: "licensed" | "metered" | undefined;
                aggregateUsage?: "sum" | "last_during_period" | "last_ever" | "max" | undefined;
                trialPeriodDays?: number | undefined;
            }, {
                interval: "day" | "week" | "month" | "year";
                intervalCount?: number | undefined;
                usageType?: "licensed" | "metered" | undefined;
                aggregateUsage?: "sum" | "last_during_period" | "last_ever" | "max" | undefined;
                trialPeriodDays?: number | undefined;
            }>>;
            provider: z.ZodLiteral<"stripe">;
            key: z.ZodOptional<z.ZodString>;
            taxBehavior: z.ZodOptional<z.ZodEnum<["inclusive", "exclusive", "unspecified"]>>;
            billingScheme: z.ZodOptional<z.ZodEnum<["per_unit", "tiered"]>>;
            productKey: z.ZodOptional<z.ZodString>;
        }>, "strip", z.ZodTypeAny, {
            type: "one_time" | "recurring";
            name: string;
            metadata: Record<string, string | number | boolean | string[]>;
            unitAmount: number;
            currency: string;
            active: boolean;
            provider: "stripe";
            nickname: string;
            id?: string | undefined;
            recurring?: {
                interval: "day" | "week" | "month" | "year";
                intervalCount: number;
                usageType?: "licensed" | "metered" | undefined;
                aggregateUsage?: "sum" | "last_during_period" | "last_ever" | "max" | undefined;
                trialPeriodDays?: number | undefined;
            } | undefined;
            productId?: string | undefined;
            key?: string | undefined;
            taxBehavior?: "inclusive" | "exclusive" | "unspecified" | undefined;
            billingScheme?: "per_unit" | "tiered" | undefined;
            productKey?: string | undefined;
        }, {
            name: string;
            unitAmount: number;
            currency: string;
            provider: "stripe";
            nickname: string;
            type?: "one_time" | "recurring" | undefined;
            id?: string | undefined;
            metadata?: Record<string, string | number | boolean | string[]> | undefined;
            recurring?: {
                interval: "day" | "week" | "month" | "year";
                intervalCount?: number | undefined;
                usageType?: "licensed" | "metered" | undefined;
                aggregateUsage?: "sum" | "last_during_period" | "last_ever" | "max" | undefined;
                trialPeriodDays?: number | undefined;
            } | undefined;
            active?: boolean | undefined;
            productId?: string | undefined;
            key?: string | undefined;
            taxBehavior?: "inclusive" | "exclusive" | "unspecified" | undefined;
            billingScheme?: "per_unit" | "tiered" | undefined;
            productKey?: string | undefined;
        }>]>, "many">;
    }, "strip", z.ZodTypeAny, {
        products: {
            name: string;
            metadata: Record<string, string | number | boolean | string[]>;
            provider: "stripe";
            id?: string | undefined;
            description?: string | undefined;
            features?: string[] | undefined;
            highlight?: boolean | undefined;
            key?: string | undefined;
        }[];
        prices: {
            type: "one_time" | "recurring";
            name: string;
            metadata: Record<string, string | number | boolean | string[]>;
            unitAmount: number;
            currency: string;
            active: boolean;
            provider: "stripe";
            nickname: string;
            id?: string | undefined;
            recurring?: {
                interval: "day" | "week" | "month" | "year";
                intervalCount: number;
                usageType?: "licensed" | "metered" | undefined;
                aggregateUsage?: "sum" | "last_during_period" | "last_ever" | "max" | undefined;
                trialPeriodDays?: number | undefined;
            } | undefined;
            productId?: string | undefined;
            key?: string | undefined;
            taxBehavior?: "inclusive" | "exclusive" | "unspecified" | undefined;
            billingScheme?: "per_unit" | "tiered" | undefined;
            productKey?: string | undefined;
        }[];
    }, {
        products: {
            name: string;
            provider: "stripe";
            id?: string | undefined;
            description?: string | undefined;
            metadata?: Record<string, string | number | boolean | string[]> | undefined;
            features?: string[] | undefined;
            highlight?: boolean | undefined;
            key?: string | undefined;
        }[];
        prices: {
            name: string;
            unitAmount: number;
            currency: string;
            provider: "stripe";
            nickname: string;
            type?: "one_time" | "recurring" | undefined;
            id?: string | undefined;
            metadata?: Record<string, string | number | boolean | string[]> | undefined;
            recurring?: {
                interval: "day" | "week" | "month" | "year";
                intervalCount?: number | undefined;
                usageType?: "licensed" | "metered" | undefined;
                aggregateUsage?: "sum" | "last_during_period" | "last_ever" | "max" | undefined;
                trialPeriodDays?: number | undefined;
            } | undefined;
            active?: boolean | undefined;
            productId?: string | undefined;
            key?: string | undefined;
            taxBehavior?: "inclusive" | "exclusive" | "unspecified" | undefined;
            billingScheme?: "per_unit" | "tiered" | undefined;
            productKey?: string | undefined;
        }[];
    }>;
    configUpdated: z.ZodBoolean;
}, "strip", z.ZodTypeAny, {
    config: {
        products: {
            name: string;
            metadata: Record<string, string | number | boolean | string[]>;
            provider: "stripe";
            id?: string | undefined;
            description?: string | undefined;
            features?: string[] | undefined;
            highlight?: boolean | undefined;
            key?: string | undefined;
        }[];
        prices: {
            type: "one_time" | "recurring";
            name: string;
            metadata: Record<string, string | number | boolean | string[]>;
            unitAmount: number;
            currency: string;
            active: boolean;
            provider: "stripe";
            nickname: string;
            id?: string | undefined;
            recurring?: {
                interval: "day" | "week" | "month" | "year";
                intervalCount: number;
                usageType?: "licensed" | "metered" | undefined;
                aggregateUsage?: "sum" | "last_during_period" | "last_ever" | "max" | undefined;
                trialPeriodDays?: number | undefined;
            } | undefined;
            productId?: string | undefined;
            key?: string | undefined;
            taxBehavior?: "inclusive" | "exclusive" | "unspecified" | undefined;
            billingScheme?: "per_unit" | "tiered" | undefined;
            productKey?: string | undefined;
        }[];
    };
    configUpdated: boolean;
}, {
    config: {
        products: {
            name: string;
            provider: "stripe";
            id?: string | undefined;
            description?: string | undefined;
            metadata?: Record<string, string | number | boolean | string[]> | undefined;
            features?: string[] | undefined;
            highlight?: boolean | undefined;
            key?: string | undefined;
        }[];
        prices: {
            name: string;
            unitAmount: number;
            currency: string;
            provider: "stripe";
            nickname: string;
            type?: "one_time" | "recurring" | undefined;
            id?: string | undefined;
            metadata?: Record<string, string | number | boolean | string[]> | undefined;
            recurring?: {
                interval: "day" | "week" | "month" | "year";
                intervalCount?: number | undefined;
                usageType?: "licensed" | "metered" | undefined;
                aggregateUsage?: "sum" | "last_during_period" | "last_ever" | "max" | undefined;
                trialPeriodDays?: number | undefined;
            } | undefined;
            active?: boolean | undefined;
            productId?: string | undefined;
            key?: string | undefined;
            taxBehavior?: "inclusive" | "exclusive" | "unspecified" | undefined;
            billingScheme?: "per_unit" | "tiered" | undefined;
            productKey?: string | undefined;
        }[];
    };
    configUpdated: boolean;
}>;
export type SyncResult = z.infer<typeof SyncResultSchema>;
/**
 * Result of pull operation
 */
export declare const PullResultSchema: z.ZodObject<{
    config: z.ZodObject<{
        products: z.ZodArray<z.ZodDiscriminatedUnion<"provider", [z.ZodObject<z.objectUtil.extendShape<{
            id: z.ZodOptional<z.ZodString>;
            name: z.ZodString;
            description: z.ZodOptional<z.ZodString>;
            metadata: z.ZodDefault<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<[z.ZodUnion<[z.ZodUnion<[z.ZodString, z.ZodNumber]>, z.ZodBoolean]>, z.ZodArray<z.ZodString, "many">]>>>>;
        }, {
            features: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
            highlight: z.ZodOptional<z.ZodBoolean>;
            provider: z.ZodLiteral<"stripe">;
            key: z.ZodOptional<z.ZodString>;
        }>, "strip", z.ZodTypeAny, {
            name: string;
            metadata: Record<string, string | number | boolean | string[]>;
            provider: "stripe";
            id?: string | undefined;
            description?: string | undefined;
            features?: string[] | undefined;
            highlight?: boolean | undefined;
            key?: string | undefined;
        }, {
            name: string;
            provider: "stripe";
            id?: string | undefined;
            description?: string | undefined;
            metadata?: Record<string, string | number | boolean | string[]> | undefined;
            features?: string[] | undefined;
            highlight?: boolean | undefined;
            key?: string | undefined;
        }>]>, "many">;
        prices: z.ZodArray<z.ZodDiscriminatedUnion<"provider", [z.ZodObject<z.objectUtil.extendShape<{
            id: z.ZodOptional<z.ZodString>;
            name: z.ZodString;
            unitAmount: z.ZodNumber;
            currency: z.ZodString;
            type: z.ZodDefault<z.ZodEnum<["one_time", "recurring"]>>;
            recurring: z.ZodOptional<z.ZodObject<{
                interval: z.ZodEnum<["day", "week", "month", "year"]>;
                intervalCount: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
            }, "strip", z.ZodTypeAny, {
                interval: "day" | "week" | "month" | "year";
                intervalCount: number;
            }, {
                interval: "day" | "week" | "month" | "year";
                intervalCount?: number | undefined;
            }>>;
            active: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
            productId: z.ZodOptional<z.ZodString>;
            metadata: z.ZodDefault<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<[z.ZodUnion<[z.ZodUnion<[z.ZodString, z.ZodNumber]>, z.ZodBoolean]>, z.ZodArray<z.ZodString, "many">]>>>>;
        }, {
            nickname: z.ZodString;
            recurring: z.ZodOptional<z.ZodObject<z.objectUtil.extendShape<{
                interval: z.ZodEnum<["day", "week", "month", "year"]>;
                intervalCount: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
            }, {
                interval: z.ZodEnum<["day", "week", "month", "year"]>;
                usageType: z.ZodOptional<z.ZodEnum<["licensed", "metered"]>>;
                aggregateUsage: z.ZodOptional<z.ZodEnum<["sum", "last_during_period", "last_ever", "max"]>>;
                trialPeriodDays: z.ZodOptional<z.ZodNumber>;
            }>, "strip", z.ZodTypeAny, {
                interval: "day" | "week" | "month" | "year";
                intervalCount: number;
                usageType?: "licensed" | "metered" | undefined;
                aggregateUsage?: "sum" | "last_during_period" | "last_ever" | "max" | undefined;
                trialPeriodDays?: number | undefined;
            }, {
                interval: "day" | "week" | "month" | "year";
                intervalCount?: number | undefined;
                usageType?: "licensed" | "metered" | undefined;
                aggregateUsage?: "sum" | "last_during_period" | "last_ever" | "max" | undefined;
                trialPeriodDays?: number | undefined;
            }>>;
            provider: z.ZodLiteral<"stripe">;
            key: z.ZodOptional<z.ZodString>;
            taxBehavior: z.ZodOptional<z.ZodEnum<["inclusive", "exclusive", "unspecified"]>>;
            billingScheme: z.ZodOptional<z.ZodEnum<["per_unit", "tiered"]>>;
            productKey: z.ZodOptional<z.ZodString>;
        }>, "strip", z.ZodTypeAny, {
            type: "one_time" | "recurring";
            name: string;
            metadata: Record<string, string | number | boolean | string[]>;
            unitAmount: number;
            currency: string;
            active: boolean;
            provider: "stripe";
            nickname: string;
            id?: string | undefined;
            recurring?: {
                interval: "day" | "week" | "month" | "year";
                intervalCount: number;
                usageType?: "licensed" | "metered" | undefined;
                aggregateUsage?: "sum" | "last_during_period" | "last_ever" | "max" | undefined;
                trialPeriodDays?: number | undefined;
            } | undefined;
            productId?: string | undefined;
            key?: string | undefined;
            taxBehavior?: "inclusive" | "exclusive" | "unspecified" | undefined;
            billingScheme?: "per_unit" | "tiered" | undefined;
            productKey?: string | undefined;
        }, {
            name: string;
            unitAmount: number;
            currency: string;
            provider: "stripe";
            nickname: string;
            type?: "one_time" | "recurring" | undefined;
            id?: string | undefined;
            metadata?: Record<string, string | number | boolean | string[]> | undefined;
            recurring?: {
                interval: "day" | "week" | "month" | "year";
                intervalCount?: number | undefined;
                usageType?: "licensed" | "metered" | undefined;
                aggregateUsage?: "sum" | "last_during_period" | "last_ever" | "max" | undefined;
                trialPeriodDays?: number | undefined;
            } | undefined;
            active?: boolean | undefined;
            productId?: string | undefined;
            key?: string | undefined;
            taxBehavior?: "inclusive" | "exclusive" | "unspecified" | undefined;
            billingScheme?: "per_unit" | "tiered" | undefined;
            productKey?: string | undefined;
        }>]>, "many">;
    }, "strip", z.ZodTypeAny, {
        products: {
            name: string;
            metadata: Record<string, string | number | boolean | string[]>;
            provider: "stripe";
            id?: string | undefined;
            description?: string | undefined;
            features?: string[] | undefined;
            highlight?: boolean | undefined;
            key?: string | undefined;
        }[];
        prices: {
            type: "one_time" | "recurring";
            name: string;
            metadata: Record<string, string | number | boolean | string[]>;
            unitAmount: number;
            currency: string;
            active: boolean;
            provider: "stripe";
            nickname: string;
            id?: string | undefined;
            recurring?: {
                interval: "day" | "week" | "month" | "year";
                intervalCount: number;
                usageType?: "licensed" | "metered" | undefined;
                aggregateUsage?: "sum" | "last_during_period" | "last_ever" | "max" | undefined;
                trialPeriodDays?: number | undefined;
            } | undefined;
            productId?: string | undefined;
            key?: string | undefined;
            taxBehavior?: "inclusive" | "exclusive" | "unspecified" | undefined;
            billingScheme?: "per_unit" | "tiered" | undefined;
            productKey?: string | undefined;
        }[];
    }, {
        products: {
            name: string;
            provider: "stripe";
            id?: string | undefined;
            description?: string | undefined;
            metadata?: Record<string, string | number | boolean | string[]> | undefined;
            features?: string[] | undefined;
            highlight?: boolean | undefined;
            key?: string | undefined;
        }[];
        prices: {
            name: string;
            unitAmount: number;
            currency: string;
            provider: "stripe";
            nickname: string;
            type?: "one_time" | "recurring" | undefined;
            id?: string | undefined;
            metadata?: Record<string, string | number | boolean | string[]> | undefined;
            recurring?: {
                interval: "day" | "week" | "month" | "year";
                intervalCount?: number | undefined;
                usageType?: "licensed" | "metered" | undefined;
                aggregateUsage?: "sum" | "last_during_period" | "last_ever" | "max" | undefined;
                trialPeriodDays?: number | undefined;
            } | undefined;
            active?: boolean | undefined;
            productId?: string | undefined;
            key?: string | undefined;
            taxBehavior?: "inclusive" | "exclusive" | "unspecified" | undefined;
            billingScheme?: "per_unit" | "tiered" | undefined;
            productKey?: string | undefined;
        }[];
    }>;
    configPath: z.ZodString;
}, "strip", z.ZodTypeAny, {
    configPath: string;
    config: {
        products: {
            name: string;
            metadata: Record<string, string | number | boolean | string[]>;
            provider: "stripe";
            id?: string | undefined;
            description?: string | undefined;
            features?: string[] | undefined;
            highlight?: boolean | undefined;
            key?: string | undefined;
        }[];
        prices: {
            type: "one_time" | "recurring";
            name: string;
            metadata: Record<string, string | number | boolean | string[]>;
            unitAmount: number;
            currency: string;
            active: boolean;
            provider: "stripe";
            nickname: string;
            id?: string | undefined;
            recurring?: {
                interval: "day" | "week" | "month" | "year";
                intervalCount: number;
                usageType?: "licensed" | "metered" | undefined;
                aggregateUsage?: "sum" | "last_during_period" | "last_ever" | "max" | undefined;
                trialPeriodDays?: number | undefined;
            } | undefined;
            productId?: string | undefined;
            key?: string | undefined;
            taxBehavior?: "inclusive" | "exclusive" | "unspecified" | undefined;
            billingScheme?: "per_unit" | "tiered" | undefined;
            productKey?: string | undefined;
        }[];
    };
}, {
    configPath: string;
    config: {
        products: {
            name: string;
            provider: "stripe";
            id?: string | undefined;
            description?: string | undefined;
            metadata?: Record<string, string | number | boolean | string[]> | undefined;
            features?: string[] | undefined;
            highlight?: boolean | undefined;
            key?: string | undefined;
        }[];
        prices: {
            name: string;
            unitAmount: number;
            currency: string;
            provider: "stripe";
            nickname: string;
            type?: "one_time" | "recurring" | undefined;
            id?: string | undefined;
            metadata?: Record<string, string | number | boolean | string[]> | undefined;
            recurring?: {
                interval: "day" | "week" | "month" | "year";
                intervalCount?: number | undefined;
                usageType?: "licensed" | "metered" | undefined;
                aggregateUsage?: "sum" | "last_during_period" | "last_ever" | "max" | undefined;
                trialPeriodDays?: number | undefined;
            } | undefined;
            active?: boolean | undefined;
            productId?: string | undefined;
            key?: string | undefined;
            taxBehavior?: "inclusive" | "exclusive" | "unspecified" | undefined;
            billingScheme?: "per_unit" | "tiered" | undefined;
            productKey?: string | undefined;
        }[];
    };
}>;
export type PullResult = z.infer<typeof PullResultSchema>;
/**
 * Result of generate operation
 */
export declare const GenerateResultSchema: z.ZodObject<{
    config: z.ZodObject<{
        products: z.ZodArray<z.ZodDiscriminatedUnion<"provider", [z.ZodObject<z.objectUtil.extendShape<{
            id: z.ZodOptional<z.ZodString>;
            name: z.ZodString;
            description: z.ZodOptional<z.ZodString>;
            metadata: z.ZodDefault<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<[z.ZodUnion<[z.ZodUnion<[z.ZodString, z.ZodNumber]>, z.ZodBoolean]>, z.ZodArray<z.ZodString, "many">]>>>>;
        }, {
            features: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
            highlight: z.ZodOptional<z.ZodBoolean>;
            provider: z.ZodLiteral<"stripe">;
            key: z.ZodOptional<z.ZodString>;
        }>, "strip", z.ZodTypeAny, {
            name: string;
            metadata: Record<string, string | number | boolean | string[]>;
            provider: "stripe";
            id?: string | undefined;
            description?: string | undefined;
            features?: string[] | undefined;
            highlight?: boolean | undefined;
            key?: string | undefined;
        }, {
            name: string;
            provider: "stripe";
            id?: string | undefined;
            description?: string | undefined;
            metadata?: Record<string, string | number | boolean | string[]> | undefined;
            features?: string[] | undefined;
            highlight?: boolean | undefined;
            key?: string | undefined;
        }>]>, "many">;
        prices: z.ZodArray<z.ZodDiscriminatedUnion<"provider", [z.ZodObject<z.objectUtil.extendShape<{
            id: z.ZodOptional<z.ZodString>;
            name: z.ZodString;
            unitAmount: z.ZodNumber;
            currency: z.ZodString;
            type: z.ZodDefault<z.ZodEnum<["one_time", "recurring"]>>;
            recurring: z.ZodOptional<z.ZodObject<{
                interval: z.ZodEnum<["day", "week", "month", "year"]>;
                intervalCount: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
            }, "strip", z.ZodTypeAny, {
                interval: "day" | "week" | "month" | "year";
                intervalCount: number;
            }, {
                interval: "day" | "week" | "month" | "year";
                intervalCount?: number | undefined;
            }>>;
            active: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
            productId: z.ZodOptional<z.ZodString>;
            metadata: z.ZodDefault<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<[z.ZodUnion<[z.ZodUnion<[z.ZodString, z.ZodNumber]>, z.ZodBoolean]>, z.ZodArray<z.ZodString, "many">]>>>>;
        }, {
            nickname: z.ZodString;
            recurring: z.ZodOptional<z.ZodObject<z.objectUtil.extendShape<{
                interval: z.ZodEnum<["day", "week", "month", "year"]>;
                intervalCount: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
            }, {
                interval: z.ZodEnum<["day", "week", "month", "year"]>;
                usageType: z.ZodOptional<z.ZodEnum<["licensed", "metered"]>>;
                aggregateUsage: z.ZodOptional<z.ZodEnum<["sum", "last_during_period", "last_ever", "max"]>>;
                trialPeriodDays: z.ZodOptional<z.ZodNumber>;
            }>, "strip", z.ZodTypeAny, {
                interval: "day" | "week" | "month" | "year";
                intervalCount: number;
                usageType?: "licensed" | "metered" | undefined;
                aggregateUsage?: "sum" | "last_during_period" | "last_ever" | "max" | undefined;
                trialPeriodDays?: number | undefined;
            }, {
                interval: "day" | "week" | "month" | "year";
                intervalCount?: number | undefined;
                usageType?: "licensed" | "metered" | undefined;
                aggregateUsage?: "sum" | "last_during_period" | "last_ever" | "max" | undefined;
                trialPeriodDays?: number | undefined;
            }>>;
            provider: z.ZodLiteral<"stripe">;
            key: z.ZodOptional<z.ZodString>;
            taxBehavior: z.ZodOptional<z.ZodEnum<["inclusive", "exclusive", "unspecified"]>>;
            billingScheme: z.ZodOptional<z.ZodEnum<["per_unit", "tiered"]>>;
            productKey: z.ZodOptional<z.ZodString>;
        }>, "strip", z.ZodTypeAny, {
            type: "one_time" | "recurring";
            name: string;
            metadata: Record<string, string | number | boolean | string[]>;
            unitAmount: number;
            currency: string;
            active: boolean;
            provider: "stripe";
            nickname: string;
            id?: string | undefined;
            recurring?: {
                interval: "day" | "week" | "month" | "year";
                intervalCount: number;
                usageType?: "licensed" | "metered" | undefined;
                aggregateUsage?: "sum" | "last_during_period" | "last_ever" | "max" | undefined;
                trialPeriodDays?: number | undefined;
            } | undefined;
            productId?: string | undefined;
            key?: string | undefined;
            taxBehavior?: "inclusive" | "exclusive" | "unspecified" | undefined;
            billingScheme?: "per_unit" | "tiered" | undefined;
            productKey?: string | undefined;
        }, {
            name: string;
            unitAmount: number;
            currency: string;
            provider: "stripe";
            nickname: string;
            type?: "one_time" | "recurring" | undefined;
            id?: string | undefined;
            metadata?: Record<string, string | number | boolean | string[]> | undefined;
            recurring?: {
                interval: "day" | "week" | "month" | "year";
                intervalCount?: number | undefined;
                usageType?: "licensed" | "metered" | undefined;
                aggregateUsage?: "sum" | "last_during_period" | "last_ever" | "max" | undefined;
                trialPeriodDays?: number | undefined;
            } | undefined;
            active?: boolean | undefined;
            productId?: string | undefined;
            key?: string | undefined;
            taxBehavior?: "inclusive" | "exclusive" | "unspecified" | undefined;
            billingScheme?: "per_unit" | "tiered" | undefined;
            productKey?: string | undefined;
        }>]>, "many">;
    }, "strip", z.ZodTypeAny, {
        products: {
            name: string;
            metadata: Record<string, string | number | boolean | string[]>;
            provider: "stripe";
            id?: string | undefined;
            description?: string | undefined;
            features?: string[] | undefined;
            highlight?: boolean | undefined;
            key?: string | undefined;
        }[];
        prices: {
            type: "one_time" | "recurring";
            name: string;
            metadata: Record<string, string | number | boolean | string[]>;
            unitAmount: number;
            currency: string;
            active: boolean;
            provider: "stripe";
            nickname: string;
            id?: string | undefined;
            recurring?: {
                interval: "day" | "week" | "month" | "year";
                intervalCount: number;
                usageType?: "licensed" | "metered" | undefined;
                aggregateUsage?: "sum" | "last_during_period" | "last_ever" | "max" | undefined;
                trialPeriodDays?: number | undefined;
            } | undefined;
            productId?: string | undefined;
            key?: string | undefined;
            taxBehavior?: "inclusive" | "exclusive" | "unspecified" | undefined;
            billingScheme?: "per_unit" | "tiered" | undefined;
            productKey?: string | undefined;
        }[];
    }, {
        products: {
            name: string;
            provider: "stripe";
            id?: string | undefined;
            description?: string | undefined;
            metadata?: Record<string, string | number | boolean | string[]> | undefined;
            features?: string[] | undefined;
            highlight?: boolean | undefined;
            key?: string | undefined;
        }[];
        prices: {
            name: string;
            unitAmount: number;
            currency: string;
            provider: "stripe";
            nickname: string;
            type?: "one_time" | "recurring" | undefined;
            id?: string | undefined;
            metadata?: Record<string, string | number | boolean | string[]> | undefined;
            recurring?: {
                interval: "day" | "week" | "month" | "year";
                intervalCount?: number | undefined;
                usageType?: "licensed" | "metered" | undefined;
                aggregateUsage?: "sum" | "last_during_period" | "last_ever" | "max" | undefined;
                trialPeriodDays?: number | undefined;
            } | undefined;
            active?: boolean | undefined;
            productId?: string | undefined;
            key?: string | undefined;
            taxBehavior?: "inclusive" | "exclusive" | "unspecified" | undefined;
            billingScheme?: "per_unit" | "tiered" | undefined;
            productKey?: string | undefined;
        }[];
    }>;
    configPath: z.ZodString;
}, "strip", z.ZodTypeAny, {
    configPath: string;
    config: {
        products: {
            name: string;
            metadata: Record<string, string | number | boolean | string[]>;
            provider: "stripe";
            id?: string | undefined;
            description?: string | undefined;
            features?: string[] | undefined;
            highlight?: boolean | undefined;
            key?: string | undefined;
        }[];
        prices: {
            type: "one_time" | "recurring";
            name: string;
            metadata: Record<string, string | number | boolean | string[]>;
            unitAmount: number;
            currency: string;
            active: boolean;
            provider: "stripe";
            nickname: string;
            id?: string | undefined;
            recurring?: {
                interval: "day" | "week" | "month" | "year";
                intervalCount: number;
                usageType?: "licensed" | "metered" | undefined;
                aggregateUsage?: "sum" | "last_during_period" | "last_ever" | "max" | undefined;
                trialPeriodDays?: number | undefined;
            } | undefined;
            productId?: string | undefined;
            key?: string | undefined;
            taxBehavior?: "inclusive" | "exclusive" | "unspecified" | undefined;
            billingScheme?: "per_unit" | "tiered" | undefined;
            productKey?: string | undefined;
        }[];
    };
}, {
    configPath: string;
    config: {
        products: {
            name: string;
            provider: "stripe";
            id?: string | undefined;
            description?: string | undefined;
            metadata?: Record<string, string | number | boolean | string[]> | undefined;
            features?: string[] | undefined;
            highlight?: boolean | undefined;
            key?: string | undefined;
        }[];
        prices: {
            name: string;
            unitAmount: number;
            currency: string;
            provider: "stripe";
            nickname: string;
            type?: "one_time" | "recurring" | undefined;
            id?: string | undefined;
            metadata?: Record<string, string | number | boolean | string[]> | undefined;
            recurring?: {
                interval: "day" | "week" | "month" | "year";
                intervalCount?: number | undefined;
                usageType?: "licensed" | "metered" | undefined;
                aggregateUsage?: "sum" | "last_during_period" | "last_ever" | "max" | undefined;
                trialPeriodDays?: number | undefined;
            } | undefined;
            active?: boolean | undefined;
            productId?: string | undefined;
            key?: string | undefined;
            taxBehavior?: "inclusive" | "exclusive" | "unspecified" | undefined;
            billingScheme?: "per_unit" | "tiered" | undefined;
            productKey?: string | undefined;
        }[];
    };
}>;
export type GenerateResult = z.infer<typeof GenerateResultSchema>;
/**
 * Provider client interfaces
 */
export interface ProviderClient {
    syncProducts(products: Product[]): Promise<Product[]>;
    syncPrices(prices: Price[]): Promise<Price[]>;
    fetchProducts(): Promise<Product[]>;
    fetchPrices(): Promise<Price[]>;
}
/**
 * Return type with typed clients
 */
export interface Clients {
    stripe?: Stripe;
}
/**
 * Private/internal types for Recurly support (not exposed in public API)
 */
/**
 * Recurly-specific product schema
 */
export declare const RecurlyProductSchema: z.ZodObject<z.objectUtil.extendShape<{
    id: z.ZodOptional<z.ZodString>;
    name: z.ZodString;
    description: z.ZodOptional<z.ZodString>;
    metadata: z.ZodDefault<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<[z.ZodUnion<[z.ZodUnion<[z.ZodString, z.ZodNumber]>, z.ZodBoolean]>, z.ZodArray<z.ZodString, "many">]>>>>;
}, {
    provider: z.ZodLiteral<"recurly">;
    code: z.ZodString;
    taxCode: z.ZodOptional<z.ZodString>;
    taxExempt: z.ZodOptional<z.ZodBoolean>;
}>, "strip", z.ZodTypeAny, {
    code: string;
    name: string;
    metadata: Record<string, string | number | boolean | string[]>;
    provider: "recurly";
    id?: string | undefined;
    description?: string | undefined;
    taxCode?: string | undefined;
    taxExempt?: boolean | undefined;
}, {
    code: string;
    name: string;
    provider: "recurly";
    id?: string | undefined;
    description?: string | undefined;
    metadata?: Record<string, string | number | boolean | string[]> | undefined;
    taxCode?: string | undefined;
    taxExempt?: boolean | undefined;
}>;
export type RecurlyProduct = z.infer<typeof RecurlyProductSchema>;
/**
 * Recurly-specific recurring schema
 */
export declare const RecurlyRecurringSchema: z.ZodObject<z.objectUtil.extendShape<{
    interval: z.ZodEnum<["day", "week", "month", "year"]>;
    intervalCount: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
}, {
    intervalLength: z.ZodNumber;
    intervalUnit: z.ZodEnum<["days", "months"]>;
    trialLength: z.ZodOptional<z.ZodNumber>;
    trialUnit: z.ZodOptional<z.ZodEnum<["days", "months"]>>;
}>, "strip", z.ZodTypeAny, {
    interval: "day" | "week" | "month" | "year";
    intervalCount: number;
    intervalLength: number;
    intervalUnit: "days" | "months";
    trialLength?: number | undefined;
    trialUnit?: "days" | "months" | undefined;
}, {
    interval: "day" | "week" | "month" | "year";
    intervalLength: number;
    intervalUnit: "days" | "months";
    intervalCount?: number | undefined;
    trialLength?: number | undefined;
    trialUnit?: "days" | "months" | undefined;
}>;
export type RecurlyRecurring = z.infer<typeof RecurlyRecurringSchema>;
/**
 * Recurly-specific price schema
 */
export declare const RecurlyPriceSchema: z.ZodObject<z.objectUtil.extendShape<{
    id: z.ZodOptional<z.ZodString>;
    name: z.ZodString;
    unitAmount: z.ZodNumber;
    currency: z.ZodString;
    type: z.ZodDefault<z.ZodEnum<["one_time", "recurring"]>>;
    recurring: z.ZodOptional<z.ZodObject<{
        interval: z.ZodEnum<["day", "week", "month", "year"]>;
        intervalCount: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
    }, "strip", z.ZodTypeAny, {
        interval: "day" | "week" | "month" | "year";
        intervalCount: number;
    }, {
        interval: "day" | "week" | "month" | "year";
        intervalCount?: number | undefined;
    }>>;
    active: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
    productId: z.ZodOptional<z.ZodString>;
    metadata: z.ZodDefault<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<[z.ZodUnion<[z.ZodUnion<[z.ZodString, z.ZodNumber]>, z.ZodBoolean]>, z.ZodArray<z.ZodString, "many">]>>>>;
}, {
    provider: z.ZodLiteral<"recurly">;
    code: z.ZodString;
    taxInclusive: z.ZodOptional<z.ZodBoolean>;
    recurring: z.ZodOptional<z.ZodObject<z.objectUtil.extendShape<{
        interval: z.ZodEnum<["day", "week", "month", "year"]>;
        intervalCount: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
    }, {
        intervalLength: z.ZodNumber;
        intervalUnit: z.ZodEnum<["days", "months"]>;
        trialLength: z.ZodOptional<z.ZodNumber>;
        trialUnit: z.ZodOptional<z.ZodEnum<["days", "months"]>>;
    }>, "strip", z.ZodTypeAny, {
        interval: "day" | "week" | "month" | "year";
        intervalCount: number;
        intervalLength: number;
        intervalUnit: "days" | "months";
        trialLength?: number | undefined;
        trialUnit?: "days" | "months" | undefined;
    }, {
        interval: "day" | "week" | "month" | "year";
        intervalLength: number;
        intervalUnit: "days" | "months";
        intervalCount?: number | undefined;
        trialLength?: number | undefined;
        trialUnit?: "days" | "months" | undefined;
    }>>;
    productCode: z.ZodString;
}>, "strip", z.ZodTypeAny, {
    code: string;
    type: "one_time" | "recurring";
    name: string;
    metadata: Record<string, string | number | boolean | string[]>;
    unitAmount: number;
    currency: string;
    active: boolean;
    provider: "recurly";
    productCode: string;
    id?: string | undefined;
    recurring?: {
        interval: "day" | "week" | "month" | "year";
        intervalCount: number;
        intervalLength: number;
        intervalUnit: "days" | "months";
        trialLength?: number | undefined;
        trialUnit?: "days" | "months" | undefined;
    } | undefined;
    productId?: string | undefined;
    taxInclusive?: boolean | undefined;
}, {
    code: string;
    name: string;
    unitAmount: number;
    currency: string;
    provider: "recurly";
    productCode: string;
    type?: "one_time" | "recurring" | undefined;
    id?: string | undefined;
    metadata?: Record<string, string | number | boolean | string[]> | undefined;
    recurring?: {
        interval: "day" | "week" | "month" | "year";
        intervalLength: number;
        intervalUnit: "days" | "months";
        intervalCount?: number | undefined;
        trialLength?: number | undefined;
        trialUnit?: "days" | "months" | undefined;
    } | undefined;
    active?: boolean | undefined;
    productId?: string | undefined;
    taxInclusive?: boolean | undefined;
}>;
export type RecurlyPrice = z.infer<typeof RecurlyPriceSchema>;
/**
 * Recurly client options
 */
export declare const RecurlyOptionsSchema: z.ZodObject<{
    apiKey: z.ZodString;
    subdomain: z.ZodOptional<z.ZodString>;
}, "strip", z.ZodTypeAny, {
    apiKey: string;
    subdomain?: string | undefined;
}, {
    apiKey: string;
    subdomain?: string | undefined;
}>;
export type RecurlyOptions = z.infer<typeof RecurlyOptionsSchema>;
