UNPKG

prices-as-code

Version:

Prices as Code (PaC) - Define your product pricing schemas with type-safe definitions

1,177 lines 71.9 kB
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; }, "