import type { Client } from 'openapi-fetch';
import type { RequestOptions } from './common.js';
import type { operations, paths, SubscriptionChange, SubscriptionCreate, SubscriptionEdit } from './schemas.js';
/**
 * Subscriptions
 */
export declare class Subscriptions {
    private readonly client;
    constructor(client: Client<paths, `${string}/${string}`>);
    /**
     * 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.js").components["schemas"]["Metadata"] | null;
        readonly createdAt: Date;
        readonly updatedAt: Date;
        readonly deletedAt?: Date;
        activeFrom: Date;
        activeTo?: Date;
        readonly annotations?: import("./schemas.js").components["schemas"]["Annotations"];
        alignment?: import("./schemas.js").components["schemas"]["Alignment"];
        readonly status: import("./schemas.js").components["schemas"]["SubscriptionStatus"];
        customerId: string;
        plan?: import("./schemas.js").components["schemas"]["PlanReference"];
        currency: import("./schemas.js").components["schemas"]["CurrencyCode"];
        readonly billingCadence: string;
        readonly proRatingConfig?: import("./schemas.js").components["schemas"]["ProRatingConfig"];
        readonly billingAnchor: Date;
    } | 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.js").components["schemas"]["Metadata"] | null;
        readonly createdAt: Date;
        readonly updatedAt: Date;
        readonly deletedAt?: Date;
        activeFrom: Date;
        activeTo?: Date;
        readonly annotations?: import("./schemas.js").components["schemas"]["Annotations"];
        readonly status: import("./schemas.js").components["schemas"]["SubscriptionStatus"];
        customerId: string;
        plan?: import("./schemas.js").components["schemas"]["PlanReference"];
        currency: import("./schemas.js").components["schemas"]["CurrencyCode"];
        readonly billingCadence: string;
        readonly proRatingConfig?: import("./schemas.js").components["schemas"]["ProRatingConfig"];
        readonly billingAnchor: Date;
        alignment?: import("./schemas.js").components["schemas"]["SubscriptionAlignment"];
        phases: import("./schemas.js").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.js").components["schemas"]["Metadata"] | null;
        readonly createdAt: Date;
        readonly updatedAt: Date;
        readonly deletedAt?: Date;
        activeFrom: Date;
        activeTo?: Date;
        readonly annotations?: import("./schemas.js").components["schemas"]["Annotations"];
        alignment?: import("./schemas.js").components["schemas"]["Alignment"];
        readonly status: import("./schemas.js").components["schemas"]["SubscriptionStatus"];
        customerId: string;
        plan?: import("./schemas.js").components["schemas"]["PlanReference"];
        currency: import("./schemas.js").components["schemas"]["CurrencyCode"];
        readonly billingCadence: string;
        readonly proRatingConfig?: import("./schemas.js").components["schemas"]["ProRatingConfig"];
        readonly billingAnchor: Date;
    } | 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.js").components["schemas"]["Metadata"] | null;
        readonly createdAt: Date;
        readonly updatedAt: Date;
        readonly deletedAt?: Date;
        activeFrom: Date;
        activeTo?: Date;
        readonly annotations?: import("./schemas.js").components["schemas"]["Annotations"];
        alignment?: import("./schemas.js").components["schemas"]["Alignment"];
        readonly status: import("./schemas.js").components["schemas"]["SubscriptionStatus"];
        customerId: string;
        plan?: import("./schemas.js").components["schemas"]["PlanReference"];
        currency: import("./schemas.js").components["schemas"]["CurrencyCode"];
        readonly billingCadence: string;
        readonly proRatingConfig?: import("./schemas.js").components["schemas"]["ProRatingConfig"];
        readonly billingAnchor: Date;
    } | 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.js").components["schemas"]["Subscription"];
        next: import("./schemas.js").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.js").components["schemas"]["Subscription"];
        next: import("./schemas.js").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.js").components["schemas"]["Metadata"] | null;
        readonly createdAt: Date;
        readonly updatedAt: Date;
        readonly deletedAt?: Date;
        activeFrom: Date;
        activeTo?: Date;
        readonly annotations?: import("./schemas.js").components["schemas"]["Annotations"];
        alignment?: import("./schemas.js").components["schemas"]["Alignment"];
        readonly status: import("./schemas.js").components["schemas"]["SubscriptionStatus"];
        customerId: string;
        plan?: import("./schemas.js").components["schemas"]["PlanReference"];
        currency: import("./schemas.js").components["schemas"]["CurrencyCode"];
        readonly billingCadence: string;
        readonly proRatingConfig?: import("./schemas.js").components["schemas"]["ProRatingConfig"];
        readonly billingAnchor: Date;
    } | 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<undefined>;
}
