prices-as-code
Version:
Prices as Code (PaC) - Define your product pricing schemas with type-safe definitions
1,177 lines • 71.9 kB
TypeScript
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;
}, "