import type { Client } from 'openapi-fetch';
import type { RequestOptions } from './common.js';
import type { operations, PlanCreate, PlanReplaceUpdate, paths } from './schemas.js';
/**
 * Plans
 * Manage customer subscription plans and addon assignments.
 */
export declare class Plans {
    private client;
    addons: PlanAddons;
    constructor(client: Client<paths, `${string}/${string}`>);
    /**
     * Create a plan
     * @param plan - The plan to create
     * @param options - Optional request options
     * @returns The created plan
     */
    create(plan: PlanCreate, 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;
        key: string;
        alignment?: import("./schemas.js").components["schemas"]["Alignment"];
        readonly version: number;
        currency: import("./schemas.js").components["schemas"]["CurrencyCode"];
        billingCadence: string;
        proRatingConfig?: import("./schemas.js").components["schemas"]["ProRatingConfig"];
        readonly effectiveFrom?: Date;
        readonly effectiveTo?: Date;
        readonly status: import("./schemas.js").components["schemas"]["PlanStatus"];
        phases: import("./schemas.js").components["schemas"]["PlanPhase"][];
        readonly validationErrors: import("./schemas.js").components["schemas"]["ValidationError"][] | null;
    } | undefined>;
    /**
     * Get a plan by ID
     * @param planId - The ID of the plan to retrieve
     * @param params - Optional query parameters
     * @param options - Optional request options
     * @returns The plan
     */
    get(planId: operations['getPlan']['parameters']['path']['planId'], params?: operations['getPlan']['parameters']['query'], 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;
        key: string;
        alignment?: import("./schemas.js").components["schemas"]["Alignment"];
        readonly version: number;
        currency: import("./schemas.js").components["schemas"]["CurrencyCode"];
        billingCadence: string;
        proRatingConfig?: import("./schemas.js").components["schemas"]["ProRatingConfig"];
        readonly effectiveFrom?: Date;
        readonly effectiveTo?: Date;
        readonly status: import("./schemas.js").components["schemas"]["PlanStatus"];
        phases: import("./schemas.js").components["schemas"]["PlanPhase"][];
        readonly validationErrors: import("./schemas.js").components["schemas"]["ValidationError"][] | null;
    } | undefined>;
    /**
     * List plans
     * @param params - Optional parameters for listing plans
     * @param options - Optional request options
     * @returns A list of plans
     */
    list(params?: operations['listPlans']['parameters']['query'], options?: RequestOptions): Promise<{
        totalCount: number;
        page: number;
        pageSize: number;
        items: import("./schemas.js").components["schemas"]["Plan"][];
    } | undefined>;
    /**
     * Update a plan
     * @param planId - The ID of the plan to update
     * @param plan - The plan data to update
     * @param options - Optional request options
     * @returns The updated plan
     */
    update(planId: operations['updatePlan']['parameters']['path']['planId'], plan: PlanReplaceUpdate, 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;
        key: string;
        alignment?: import("./schemas.js").components["schemas"]["Alignment"];
        readonly version: number;
        currency: import("./schemas.js").components["schemas"]["CurrencyCode"];
        billingCadence: string;
        proRatingConfig?: import("./schemas.js").components["schemas"]["ProRatingConfig"];
        readonly effectiveFrom?: Date;
        readonly effectiveTo?: Date;
        readonly status: import("./schemas.js").components["schemas"]["PlanStatus"];
        phases: import("./schemas.js").components["schemas"]["PlanPhase"][];
        readonly validationErrors: import("./schemas.js").components["schemas"]["ValidationError"][] | null;
    } | undefined>;
    /**
     * Delete a plan by ID
     * @param planId - The ID of the plan to delete
     * @param options - Optional request options
     * @returns void or standard error response structure
     */
    delete(planId: operations['deletePlan']['parameters']['path']['planId'], options?: RequestOptions): Promise<undefined>;
    /**
     * Archive a plan
     * @param planId - The ID of the plan to archive
     * @param options - Optional request options
     * @returns The archived plan
     */
    archive(planId: operations['archivePlan']['parameters']['path']['planId'], 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;
        key: string;
        alignment?: import("./schemas.js").components["schemas"]["Alignment"];
        readonly version: number;
        currency: import("./schemas.js").components["schemas"]["CurrencyCode"];
        billingCadence: string;
        proRatingConfig?: import("./schemas.js").components["schemas"]["ProRatingConfig"];
        readonly effectiveFrom?: Date;
        readonly effectiveTo?: Date;
        readonly status: import("./schemas.js").components["schemas"]["PlanStatus"];
        phases: import("./schemas.js").components["schemas"]["PlanPhase"][];
        readonly validationErrors: import("./schemas.js").components["schemas"]["ValidationError"][] | null;
    } | undefined>;
    /**
     * Publish a plan
     * @param planId - The ID of the plan to publish
     * @param options - Optional request options
     * @returns The published plan
     */
    publish(planId: operations['publishPlan']['parameters']['path']['planId'], 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;
        key: string;
        alignment?: import("./schemas.js").components["schemas"]["Alignment"];
        readonly version: number;
        currency: import("./schemas.js").components["schemas"]["CurrencyCode"];
        billingCadence: string;
        proRatingConfig?: import("./schemas.js").components["schemas"]["ProRatingConfig"];
        readonly effectiveFrom?: Date;
        readonly effectiveTo?: Date;
        readonly status: import("./schemas.js").components["schemas"]["PlanStatus"];
        phases: import("./schemas.js").components["schemas"]["PlanPhase"][];
        readonly validationErrors: import("./schemas.js").components["schemas"]["ValidationError"][] | null;
    } | undefined>;
}
/**
 * Plan Addons
 * Manage addon assignments for plans.
 */
export declare class PlanAddons {
    private client;
    constructor(client: Client<paths, `${string}/${string}`>);
    /**
     * List plan addons
     * @param planId - The ID of the plan
     * @param params - Optional query parameters
     * @param options - Optional request options
     * @returns A list of plan addons
     */
    list(planId: operations['listPlanAddons']['parameters']['path']['planId'], params?: operations['listPlanAddons']['parameters']['query'], options?: RequestOptions): Promise<{
        totalCount: number;
        page: number;
        pageSize: number;
        items: import("./schemas.js").components["schemas"]["PlanAddon"][];
    } | undefined>;
    /**
     * Create a plan addon
     * @param planId - The ID of the plan
     * @param planAddon - The plan addon to create
     * @param options - Optional request options
     * @returns The created plan addon
     */
    create(planId: operations['createPlanAddon']['parameters']['path']['planId'], planAddon: operations['createPlanAddon']['requestBody']['content']['application/json'], options?: RequestOptions): Promise<{
        readonly createdAt: Date;
        readonly updatedAt: Date;
        readonly deletedAt?: Date;
        readonly annotations?: import("./schemas.js").components["schemas"]["Annotations"];
        metadata?: import("./schemas.js").components["schemas"]["Metadata"];
        readonly addon: import("./schemas.js").components["schemas"]["Addon"];
        fromPlanPhase: string;
        maxQuantity?: number;
        readonly validationErrors: import("./schemas.js").components["schemas"]["ValidationError"][] | null;
    } | undefined>;
    /**
     * Get a plan addon by ID
     * @param planId - The ID of the plan
     * @param planAddonId - The ID of the plan addon
     * @param options - Optional request options
     * @returns The plan addon
     */
    get(planId: operations['getPlanAddon']['parameters']['path']['planId'], planAddonId: operations['getPlanAddon']['parameters']['path']['planAddonId'], options?: RequestOptions): Promise<{
        readonly createdAt: Date;
        readonly updatedAt: Date;
        readonly deletedAt?: Date;
        readonly annotations?: import("./schemas.js").components["schemas"]["Annotations"];
        metadata?: import("./schemas.js").components["schemas"]["Metadata"];
        readonly addon: import("./schemas.js").components["schemas"]["Addon"];
        fromPlanPhase: string;
        maxQuantity?: number;
        readonly validationErrors: import("./schemas.js").components["schemas"]["ValidationError"][] | null;
    } | undefined>;
    /**
     * Update a plan addon
     * @param planId - The ID of the plan
     * @param planAddonId - The ID of the plan addon to update
     * @param planAddon - The plan addon data to update
     * @param options - Optional request options
     * @returns The updated plan addon
     */
    update(planId: operations['updatePlanAddon']['parameters']['path']['planId'], planAddonId: operations['updatePlanAddon']['parameters']['path']['planAddonId'], planAddon: operations['updatePlanAddon']['requestBody']['content']['application/json'], options?: RequestOptions): Promise<{
        readonly createdAt: Date;
        readonly updatedAt: Date;
        readonly deletedAt?: Date;
        readonly annotations?: import("./schemas.js").components["schemas"]["Annotations"];
        metadata?: import("./schemas.js").components["schemas"]["Metadata"];
        readonly addon: import("./schemas.js").components["schemas"]["Addon"];
        fromPlanPhase: string;
        maxQuantity?: number;
        readonly validationErrors: import("./schemas.js").components["schemas"]["ValidationError"][] | null;
    } | undefined>;
    /**
     * Delete a plan addon by ID
     * @param planId - The ID of the plan
     * @param planAddonId - The ID of the plan addon to delete
     * @param options - Optional request options
     * @returns void or standard error response structure
     */
    delete(planId: operations['deletePlanAddon']['parameters']['path']['planId'], planAddonId: operations['deletePlanAddon']['parameters']['path']['planAddonId'], options?: RequestOptions): Promise<undefined>;
}
