import type { Client } from 'openapi-fetch'; import type { RequestOptions } from './common.cjs'; import type { operations, paths, SubscriptionChange, SubscriptionCreate, SubscriptionEdit } from './schemas.cjs'; /** * Subscriptions */ export declare class Subscriptions { private readonly client; constructor(client: Client); /** * Create a subscription * @param body - The subscription to create * @param signal - An optional abort signal * @returns The created subscription */ create(body: SubscriptionCreate, options?: RequestOptions): Promise<{ readonly id: string; name: string; description?: string; metadata?: import("./schemas.cjs").components["schemas"]["Metadata"] | null; readonly createdAt: Date; readonly updatedAt: Date; readonly deletedAt?: Date; activeFrom: Date; activeTo?: Date; readonly annotations?: import("./schemas.cjs").components["schemas"]["Annotations"]; alignment?: import("./schemas.cjs").components["schemas"]["Alignment"]; readonly status: import("./schemas.cjs").components["schemas"]["SubscriptionStatus"]; customerId: string; plan?: import("./schemas.cjs").components["schemas"]["PlanReference"]; currency: import("./schemas.cjs").components["schemas"]["CurrencyCode"]; readonly billingCadence: string; readonly proRatingConfig?: import("./schemas.cjs").components["schemas"]["ProRatingConfig"]; readonly billingAnchor: Date; readonly settlementMode: import("./schemas.cjs").components["schemas"]["BillingSettlementMode"]; } | undefined>; /** * Get a subscription * @param id - The subscription ID * @param signal - An optional abort signal * @returns The subscription */ get(id: operations['getSubscription']['parameters']['path']['subscriptionId'], options?: RequestOptions): Promise<{ readonly id: string; name: string; description?: string; metadata?: import("./schemas.cjs").components["schemas"]["Metadata"] | null; readonly createdAt: Date; readonly updatedAt: Date; readonly deletedAt?: Date; activeFrom: Date; activeTo?: Date; readonly annotations?: import("./schemas.cjs").components["schemas"]["Annotations"]; readonly status: import("./schemas.cjs").components["schemas"]["SubscriptionStatus"]; customerId: string; plan?: import("./schemas.cjs").components["schemas"]["PlanReference"]; currency: import("./schemas.cjs").components["schemas"]["CurrencyCode"]; readonly billingCadence: string; readonly proRatingConfig?: import("./schemas.cjs").components["schemas"]["ProRatingConfig"]; readonly billingAnchor: Date; readonly settlementMode: import("./schemas.cjs").components["schemas"]["BillingSettlementMode"]; alignment?: import("./schemas.cjs").components["schemas"]["SubscriptionAlignment"]; phases: import("./schemas.cjs").components["schemas"]["SubscriptionPhaseExpanded"][]; } | undefined>; /** * Edit a subscription * @param id - The subscription ID * @param body - The subscription to edit * @param signal - An optional abort signal * @returns The edited subscription */ edit(id: operations['editSubscription']['parameters']['path']['subscriptionId'], body: SubscriptionEdit, options?: RequestOptions): Promise<{ readonly id: string; name: string; description?: string; metadata?: import("./schemas.cjs").components["schemas"]["Metadata"] | null; readonly createdAt: Date; readonly updatedAt: Date; readonly deletedAt?: Date; activeFrom: Date; activeTo?: Date; readonly annotations?: import("./schemas.cjs").components["schemas"]["Annotations"]; alignment?: import("./schemas.cjs").components["schemas"]["Alignment"]; readonly status: import("./schemas.cjs").components["schemas"]["SubscriptionStatus"]; customerId: string; plan?: import("./schemas.cjs").components["schemas"]["PlanReference"]; currency: import("./schemas.cjs").components["schemas"]["CurrencyCode"]; readonly billingCadence: string; readonly proRatingConfig?: import("./schemas.cjs").components["schemas"]["ProRatingConfig"]; readonly billingAnchor: Date; readonly settlementMode: import("./schemas.cjs").components["schemas"]["BillingSettlementMode"]; } | undefined>; /** * Cancel a subscription * @param id - The subscription ID * @param body - The subscription to cancel * @param signal - An optional abort signal * @returns The canceled subscription */ cancel(id: operations['cancelSubscription']['parameters']['path']['subscriptionId'], body: operations['cancelSubscription']['requestBody']['content']['application/json'], options?: RequestOptions): Promise<{ readonly id: string; name: string; description?: string; metadata?: import("./schemas.cjs").components["schemas"]["Metadata"] | null; readonly createdAt: Date; readonly updatedAt: Date; readonly deletedAt?: Date; activeFrom: Date; activeTo?: Date; readonly annotations?: import("./schemas.cjs").components["schemas"]["Annotations"]; alignment?: import("./schemas.cjs").components["schemas"]["Alignment"]; readonly status: import("./schemas.cjs").components["schemas"]["SubscriptionStatus"]; customerId: string; plan?: import("./schemas.cjs").components["schemas"]["PlanReference"]; currency: import("./schemas.cjs").components["schemas"]["CurrencyCode"]; readonly billingCadence: string; readonly proRatingConfig?: import("./schemas.cjs").components["schemas"]["ProRatingConfig"]; readonly billingAnchor: Date; readonly settlementMode: import("./schemas.cjs").components["schemas"]["BillingSettlementMode"]; } | undefined>; /** * Change a subscription * @description Closes a running subscription and starts a new one according to the specification. Can be used for upgrades, downgrades, and plan changes. * @param id - The subscription ID * @param body - The subscription to change * @param signal - An optional abort signal * @returns The changed subscription */ change(id: operations['changeSubscription']['parameters']['path']['subscriptionId'], body: SubscriptionChange, options?: RequestOptions): Promise<{ current: import("./schemas.cjs").components["schemas"]["Subscription"]; next: import("./schemas.cjs").components["schemas"]["SubscriptionExpanded"]; } | undefined>; /** * Migrate a subscription * @description Migrates the subscripiton to the provided version of the current plan. * @param id - The subscription ID * @param body - The subscription to migrate * @param signal - An optional abort signal * @returns The migrated subscription */ migrate(id: operations['migrateSubscription']['parameters']['path']['subscriptionId'], body: operations['migrateSubscription']['requestBody']['content']['application/json'], options?: RequestOptions): Promise<{ current: import("./schemas.cjs").components["schemas"]["Subscription"]; next: import("./schemas.cjs").components["schemas"]["SubscriptionExpanded"]; } | undefined>; /** * Unschedule a cancelation * @param id - The subscription ID * @param signal - An optional abort signal * @returns The unscheduled subscription */ unscheduleCancelation(id: operations['unscheduleCancelation']['parameters']['path']['subscriptionId'], options?: RequestOptions): Promise<{ readonly id: string; name: string; description?: string; metadata?: import("./schemas.cjs").components["schemas"]["Metadata"] | null; readonly createdAt: Date; readonly updatedAt: Date; readonly deletedAt?: Date; activeFrom: Date; activeTo?: Date; readonly annotations?: import("./schemas.cjs").components["schemas"]["Annotations"]; alignment?: import("./schemas.cjs").components["schemas"]["Alignment"]; readonly status: import("./schemas.cjs").components["schemas"]["SubscriptionStatus"]; customerId: string; plan?: import("./schemas.cjs").components["schemas"]["PlanReference"]; currency: import("./schemas.cjs").components["schemas"]["CurrencyCode"]; readonly billingCadence: string; readonly proRatingConfig?: import("./schemas.cjs").components["schemas"]["ProRatingConfig"]; readonly billingAnchor: Date; readonly settlementMode: import("./schemas.cjs").components["schemas"]["BillingSettlementMode"]; } | undefined>; /** * Delete subscription * @description Deletes a subscription. Only scheduled subscriptions can be deleted. * @param subscriptionId - The ID of the subscription to delete * @param options - Optional request options * @returns void or standard error response structure */ delete(subscriptionId: operations['deleteSubscription']['parameters']['path']['subscriptionId'], options?: RequestOptions): Promise; }