import * as Schema from "effect/Schema";
export declare const PostSubscriptionsSubscriptionExposedIdInput: Schema.Struct<{
    readonly subscription_exposed_id: Schema.String;
    readonly add_invoice_items: Schema.optional<Schema.$Array<Schema.Struct<{
        readonly discounts: Schema.optional<Schema.$Array<Schema.Struct<{
            readonly coupon: Schema.optional<Schema.String>;
            readonly discount: Schema.optional<Schema.String>;
            readonly promotion_code: Schema.optional<Schema.String>;
        }>>>;
        readonly metadata: Schema.optional<Schema.$Record<Schema.String, Schema.String>>;
        readonly period: Schema.optional<Schema.Struct<{
            readonly end: Schema.Struct<{
                readonly timestamp: Schema.optional<Schema.Number>;
                readonly type: Schema.Literals<readonly ["min_item_period_end", "timestamp"]>;
            }>;
            readonly start: Schema.Struct<{
                readonly timestamp: Schema.optional<Schema.Number>;
                readonly type: Schema.Literals<readonly ["max_item_period_start", "now", "timestamp"]>;
            }>;
        }>>;
        readonly price: Schema.optional<Schema.String>;
        readonly price_data: Schema.optional<Schema.Struct<{
            readonly currency: Schema.String;
            readonly product: Schema.String;
            readonly tax_behavior: Schema.optional<Schema.Literals<readonly ["exclusive", "inclusive", "unspecified"]>>;
            readonly unit_amount: Schema.optional<Schema.Number>;
            readonly unit_amount_decimal: Schema.optional<Schema.String>;
        }>>;
        readonly quantity: Schema.optional<Schema.Number>;
        readonly tax_rates: Schema.optional<Schema.Unknown>;
    }>>>;
    readonly application_fee_percent: Schema.optional<Schema.Unknown>;
    readonly automatic_tax: Schema.optional<Schema.Struct<{
        readonly enabled: Schema.Boolean;
        readonly liability: Schema.optional<Schema.Struct<{
            readonly account: Schema.optional<Schema.String>;
            readonly type: Schema.Literals<readonly ["account", "self"]>;
        }>>;
    }>>;
    readonly billing_cycle_anchor: Schema.optional<Schema.Literals<readonly ["now", "unchanged"]>>;
    readonly billing_thresholds: Schema.optional<Schema.Unknown>;
    readonly cancel_at: Schema.optional<Schema.Unknown>;
    readonly cancel_at_period_end: Schema.optional<Schema.Boolean>;
    readonly cancellation_details: Schema.optional<Schema.Struct<{
        readonly comment: Schema.optional<Schema.Unknown>;
        readonly feedback: Schema.optional<Schema.Literals<readonly ["", "customer_service", "low_quality", "missing_features", "other", "switched_service", "too_complex", "too_expensive", "unused"]>>;
    }>>;
    readonly collection_method: Schema.optional<Schema.Literals<readonly ["charge_automatically", "send_invoice"]>>;
    readonly days_until_due: Schema.optional<Schema.Number>;
    readonly default_payment_method: Schema.optional<Schema.String>;
    readonly default_source: Schema.optional<Schema.Unknown>;
    readonly default_tax_rates: Schema.optional<Schema.Unknown>;
    readonly description: Schema.optional<Schema.Unknown>;
    readonly discounts: Schema.optional<Schema.Unknown>;
    readonly expand: Schema.optional<Schema.$Array<Schema.String>>;
    readonly invoice_settings: Schema.optional<Schema.Struct<{
        readonly account_tax_ids: Schema.optional<Schema.Unknown>;
        readonly issuer: Schema.optional<Schema.Struct<{
            readonly account: Schema.optional<Schema.String>;
            readonly type: Schema.Literals<readonly ["account", "self"]>;
        }>>;
    }>>;
    readonly items: Schema.optional<Schema.$Array<Schema.Struct<{
        readonly billing_thresholds: Schema.optional<Schema.Unknown>;
        readonly clear_usage: Schema.optional<Schema.Boolean>;
        readonly deleted: Schema.optional<Schema.Boolean>;
        readonly discounts: Schema.optional<Schema.Unknown>;
        readonly id: Schema.optional<Schema.String>;
        readonly metadata: Schema.optional<Schema.Unknown>;
        readonly plan: Schema.optional<Schema.String>;
        readonly price: Schema.optional<Schema.String>;
        readonly price_data: Schema.optional<Schema.Struct<{
            readonly currency: Schema.String;
            readonly product: Schema.String;
            readonly recurring: Schema.Struct<{
                readonly interval: Schema.Literals<readonly ["day", "month", "week", "year"]>;
                readonly interval_count: Schema.optional<Schema.Number>;
            }>;
            readonly tax_behavior: Schema.optional<Schema.Literals<readonly ["exclusive", "inclusive", "unspecified"]>>;
            readonly unit_amount: Schema.optional<Schema.Number>;
            readonly unit_amount_decimal: Schema.optional<Schema.String>;
        }>>;
        readonly quantity: Schema.optional<Schema.Number>;
        readonly tax_rates: Schema.optional<Schema.Unknown>;
    }>>>;
    readonly metadata: Schema.optional<Schema.Unknown>;
    readonly off_session: Schema.optional<Schema.Boolean>;
    readonly on_behalf_of: Schema.optional<Schema.Unknown>;
    readonly pause_collection: Schema.optional<Schema.Unknown>;
    readonly payment_behavior: Schema.optional<Schema.Literals<readonly ["allow_incomplete", "default_incomplete", "error_if_incomplete", "pending_if_incomplete"]>>;
    readonly payment_settings: Schema.optional<Schema.Struct<{
        readonly payment_method_options: Schema.optional<Schema.Struct<{
            readonly acss_debit: Schema.optional<Schema.Unknown>;
            readonly bancontact: Schema.optional<Schema.Unknown>;
            readonly card: Schema.optional<Schema.Unknown>;
            readonly customer_balance: Schema.optional<Schema.Unknown>;
            readonly konbini: Schema.optional<Schema.Unknown>;
            readonly payto: Schema.optional<Schema.Unknown>;
            readonly sepa_debit: Schema.optional<Schema.Unknown>;
            readonly us_bank_account: Schema.optional<Schema.Unknown>;
        }>>;
        readonly payment_method_types: Schema.optional<Schema.Unknown>;
        readonly save_default_payment_method: Schema.optional<Schema.Literals<readonly ["off", "on_subscription"]>>;
    }>>;
    readonly pending_invoice_item_interval: Schema.optional<Schema.Unknown>;
    readonly proration_behavior: Schema.optional<Schema.Literals<readonly ["always_invoice", "create_prorations", "none"]>>;
    readonly proration_date: Schema.optional<Schema.Number>;
    readonly transfer_data: Schema.optional<Schema.Unknown>;
    readonly trial_end: Schema.optional<Schema.Unknown>;
    readonly trial_from_plan: Schema.optional<Schema.Boolean>;
    readonly trial_settings: Schema.optional<Schema.Struct<{
        readonly end_behavior: Schema.Struct<{
            readonly missing_payment_method: Schema.Literals<readonly ["cancel", "create_invoice", "pause"]>;
        }>;
    }>>;
}>;
export type PostSubscriptionsSubscriptionExposedIdInput = typeof PostSubscriptionsSubscriptionExposedIdInput.Type;
export declare const PostSubscriptionsSubscriptionExposedIdOutput: Schema.Struct<{
    readonly application: Schema.Unknown;
    readonly application_fee_percent: Schema.NullOr<Schema.Number>;
    readonly automatic_tax: Schema.Struct<{
        readonly disabled_reason: Schema.NullOr<Schema.Literals<readonly ["requires_location_inputs"]>>;
        readonly enabled: Schema.Boolean;
        readonly liability: Schema.Unknown;
    }>;
    readonly billing_cycle_anchor: Schema.Number;
    readonly billing_cycle_anchor_config: Schema.Unknown;
    readonly billing_mode: Schema.Struct<{
        readonly flexible: Schema.Unknown;
        readonly type: Schema.Literals<readonly ["classic", "flexible"]>;
        readonly updated_at: Schema.optional<Schema.Number>;
    }>;
    readonly billing_thresholds: Schema.Unknown;
    readonly cancel_at: Schema.NullOr<Schema.Number>;
    readonly cancel_at_period_end: Schema.Boolean;
    readonly canceled_at: Schema.NullOr<Schema.Number>;
    readonly cancellation_details: Schema.Unknown;
    readonly collection_method: Schema.Literals<readonly ["charge_automatically", "send_invoice"]>;
    readonly created: Schema.Number;
    readonly currency: Schema.String;
    readonly customer: Schema.Unknown;
    readonly customer_account: Schema.NullOr<Schema.String>;
    readonly days_until_due: Schema.NullOr<Schema.Number>;
    readonly default_payment_method: Schema.Unknown;
    readonly default_source: Schema.Unknown;
    readonly default_tax_rates: Schema.optional<Schema.NullOr<Schema.$Array<Schema.Struct<{
        readonly active: Schema.Boolean;
        readonly country: Schema.NullOr<Schema.String>;
        readonly created: Schema.Number;
        readonly description: Schema.NullOr<Schema.String>;
        readonly display_name: Schema.String;
        readonly effective_percentage: Schema.NullOr<Schema.Number>;
        readonly flat_amount: Schema.Unknown;
        readonly id: Schema.String;
        readonly inclusive: Schema.Boolean;
        readonly jurisdiction: Schema.NullOr<Schema.String>;
        readonly jurisdiction_level: Schema.NullOr<Schema.Literals<readonly ["city", "country", "county", "district", "multiple", "state"]>>;
        readonly livemode: Schema.Boolean;
        readonly metadata: Schema.NullOr<Schema.$Record<Schema.String, Schema.String>>;
        readonly object: Schema.Literals<readonly ["tax_rate"]>;
        readonly percentage: Schema.Number;
        readonly rate_type: Schema.NullOr<Schema.Literals<readonly ["flat_amount", "percentage"]>>;
        readonly state: Schema.NullOr<Schema.String>;
        readonly tax_type: Schema.NullOr<Schema.Literals<readonly ["amusement_tax", "communications_tax", "gst", "hst", "igst", "jct", "lease_tax", "pst", "qst", "retail_delivery_fee", "rst", "sales_tax", "service_tax", "vat"]>>;
    }>>>>;
    readonly description: Schema.NullOr<Schema.String>;
    readonly discounts: Schema.$Array<Schema.Unknown>;
    readonly ended_at: Schema.NullOr<Schema.Number>;
    readonly id: Schema.String;
    readonly invoice_settings: Schema.Struct<{
        readonly account_tax_ids: Schema.NullOr<Schema.$Array<Schema.Unknown>>;
        readonly issuer: Schema.Struct<{
            readonly account: Schema.optional<Schema.Unknown>;
            readonly type: Schema.Literals<readonly ["account", "self"]>;
        }>;
    }>;
    readonly items: Schema.Struct<{
        readonly data: Schema.$Array<Schema.Struct<{
            readonly billing_thresholds: Schema.Unknown;
            readonly created: Schema.Number;
            readonly current_period_end: Schema.Number;
            readonly current_period_start: Schema.Number;
            readonly discounts: Schema.$Array<Schema.Unknown>;
            readonly id: Schema.String;
            readonly metadata: Schema.$Record<Schema.String, Schema.String>;
            readonly object: Schema.Literals<readonly ["subscription_item"]>;
            readonly plan: Schema.Struct<{
                readonly active: Schema.Boolean;
                readonly amount: Schema.NullOr<Schema.Number>;
                readonly amount_decimal: Schema.NullOr<Schema.String>;
                readonly billing_scheme: Schema.Literals<readonly ["per_unit", "tiered"]>;
                readonly created: Schema.Number;
                readonly currency: Schema.String;
                readonly id: Schema.String;
                readonly interval: Schema.Literals<readonly ["day", "month", "week", "year"]>;
                readonly interval_count: Schema.Number;
                readonly livemode: Schema.Boolean;
                readonly metadata: Schema.NullOr<Schema.$Record<Schema.String, Schema.String>>;
                readonly meter: Schema.NullOr<Schema.String>;
                readonly nickname: Schema.NullOr<Schema.String>;
                readonly object: Schema.Literals<readonly ["plan"]>;
                readonly product: Schema.Unknown;
                readonly tiers: Schema.optional<Schema.$Array<Schema.Struct<{
                    readonly flat_amount: Schema.NullOr<Schema.Number>;
                    readonly flat_amount_decimal: Schema.NullOr<Schema.String>;
                    readonly unit_amount: Schema.NullOr<Schema.Number>;
                    readonly unit_amount_decimal: Schema.NullOr<Schema.String>;
                    readonly up_to: Schema.NullOr<Schema.Number>;
                }>>>;
                readonly tiers_mode: Schema.NullOr<Schema.Literals<readonly ["graduated", "volume"]>>;
                readonly transform_usage: Schema.Unknown;
                readonly trial_period_days: Schema.NullOr<Schema.Number>;
                readonly usage_type: Schema.Literals<readonly ["licensed", "metered"]>;
            }>;
            readonly price: Schema.Struct<{
                readonly active: Schema.Boolean;
                readonly billing_scheme: Schema.Literals<readonly ["per_unit", "tiered"]>;
                readonly created: Schema.Number;
                readonly currency: Schema.String;
                readonly currency_options: Schema.optional<Schema.$Record<Schema.String, Schema.Struct<{
                    readonly custom_unit_amount: Schema.Unknown;
                    readonly tax_behavior: Schema.NullOr<Schema.Literals<readonly ["exclusive", "inclusive", "unspecified"]>>;
                    readonly tiers: Schema.optional<Schema.$Array<Schema.Struct<{
                        readonly flat_amount: Schema.NullOr<Schema.Number>;
                        readonly flat_amount_decimal: Schema.NullOr<Schema.String>;
                        readonly unit_amount: Schema.NullOr<Schema.Number>;
                        readonly unit_amount_decimal: Schema.NullOr<Schema.String>;
                        readonly up_to: Schema.NullOr<Schema.Number>;
                    }>>>;
                    readonly unit_amount: Schema.NullOr<Schema.Number>;
                    readonly unit_amount_decimal: Schema.NullOr<Schema.String>;
                }>>>;
                readonly custom_unit_amount: Schema.Unknown;
                readonly id: Schema.String;
                readonly livemode: Schema.Boolean;
                readonly lookup_key: Schema.NullOr<Schema.String>;
                readonly metadata: Schema.$Record<Schema.String, Schema.String>;
                readonly nickname: Schema.NullOr<Schema.String>;
                readonly object: Schema.Literals<readonly ["price"]>;
                readonly product: Schema.Unknown;
                readonly recurring: Schema.Unknown;
                readonly tax_behavior: Schema.NullOr<Schema.Literals<readonly ["exclusive", "inclusive", "unspecified"]>>;
                readonly tiers: Schema.optional<Schema.$Array<Schema.Struct<{
                    readonly flat_amount: Schema.NullOr<Schema.Number>;
                    readonly flat_amount_decimal: Schema.NullOr<Schema.String>;
                    readonly unit_amount: Schema.NullOr<Schema.Number>;
                    readonly unit_amount_decimal: Schema.NullOr<Schema.String>;
                    readonly up_to: Schema.NullOr<Schema.Number>;
                }>>>;
                readonly tiers_mode: Schema.NullOr<Schema.Literals<readonly ["graduated", "volume"]>>;
                readonly transform_quantity: Schema.Unknown;
                readonly type: Schema.Literals<readonly ["one_time", "recurring"]>;
                readonly unit_amount: Schema.NullOr<Schema.Number>;
                readonly unit_amount_decimal: Schema.NullOr<Schema.String>;
            }>;
            readonly quantity: Schema.optional<Schema.Number>;
            readonly subscription: Schema.String;
            readonly tax_rates: Schema.NullOr<Schema.$Array<Schema.Struct<{
                readonly active: Schema.Boolean;
                readonly country: Schema.NullOr<Schema.String>;
                readonly created: Schema.Number;
                readonly description: Schema.NullOr<Schema.String>;
                readonly display_name: Schema.String;
                readonly effective_percentage: Schema.NullOr<Schema.Number>;
                readonly flat_amount: Schema.Unknown;
                readonly id: Schema.String;
                readonly inclusive: Schema.Boolean;
                readonly jurisdiction: Schema.NullOr<Schema.String>;
                readonly jurisdiction_level: Schema.NullOr<Schema.Literals<readonly ["city", "country", "county", "district", "multiple", "state"]>>;
                readonly livemode: Schema.Boolean;
                readonly metadata: Schema.NullOr<Schema.$Record<Schema.String, Schema.String>>;
                readonly object: Schema.Literals<readonly ["tax_rate"]>;
                readonly percentage: Schema.Number;
                readonly rate_type: Schema.NullOr<Schema.Literals<readonly ["flat_amount", "percentage"]>>;
                readonly state: Schema.NullOr<Schema.String>;
                readonly tax_type: Schema.NullOr<Schema.Literals<readonly ["amusement_tax", "communications_tax", "gst", "hst", "igst", "jct", "lease_tax", "pst", "qst", "retail_delivery_fee", "rst", "sales_tax", "service_tax", "vat"]>>;
            }>>>;
        }>>;
        readonly has_more: Schema.Boolean;
        readonly object: Schema.Literals<readonly ["list"]>;
        readonly url: Schema.String;
    }>;
    readonly latest_invoice: Schema.Unknown;
    readonly livemode: Schema.Boolean;
    readonly metadata: Schema.$Record<Schema.String, Schema.String>;
    readonly next_pending_invoice_item_invoice: Schema.NullOr<Schema.Number>;
    readonly object: Schema.Literals<readonly ["subscription"]>;
    readonly on_behalf_of: Schema.Unknown;
    readonly pause_collection: Schema.Unknown;
    readonly payment_settings: Schema.Unknown;
    readonly pending_invoice_item_interval: Schema.Unknown;
    readonly pending_setup_intent: Schema.Unknown;
    readonly pending_update: Schema.Unknown;
    readonly schedule: Schema.Unknown;
    readonly start_date: Schema.Number;
    readonly status: Schema.Literals<readonly ["active", "canceled", "incomplete", "incomplete_expired", "past_due", "paused", "trialing", "unpaid"]>;
    readonly test_clock: Schema.Unknown;
    readonly transfer_data: Schema.Unknown;
    readonly trial_end: Schema.NullOr<Schema.Number>;
    readonly trial_settings: Schema.Unknown;
    readonly trial_start: Schema.NullOr<Schema.Number>;
}>;
export type PostSubscriptionsSubscriptionExposedIdOutput = typeof PostSubscriptionsSubscriptionExposedIdOutput.Type;
/**
 * Update a subscription
 *
 * <p>Updates an existing subscription to match the specified parameters.
 * When changing prices or quantities, we optionally prorate the price we charge next month to make up for any price changes.
 * To preview how the proration is calculated, use the <a href="/docs/api/invoices/create_preview">create preview</a> endpoint.</p>
 * <p>By default, we prorate subscription changes. For example, if a customer signs up on May 1 for a <currency>100</currency> price, they’ll be billed <currency>100</currency> immediately. If on May 15 they switch to a <currency>200</currency> price, then on June 1 they’ll be billed <currency>250</currency> (<currency>200</currency> for a renewal of her subscription, plus a <currency>50</currency> prorating adjustment for half of the previous month’s <currency>100</currency> difference). Similarly, a downgrade generates a credit that is applied to the next invoice. We also prorate when you make quantity changes.</p>
 * <p>Switching prices does not normally change the billing date or generate an immediate charge unless:</p>
 * <ul>
 * <li>The billing interval is changed (for example, from monthly to yearly).</li>
 * <li>The subscription moves from free to paid.</li>
 * <li>A trial starts or ends.</li>
 * </ul>
 * <p>In these cases, we apply a credit for the unused time on the previous price, immediately charge the customer using the new price, and reset the billing date. Learn about how <a href="/docs/billing/subscriptions/upgrade-downgrade#immediate-payment">Stripe immediately attempts payment for subscription changes</a>.</p>
 * <p>If you want to charge for an upgrade immediately, pass <code>proration_behavior</code> as <code>always_invoice</code> to create prorations, automatically invoice the customer for those proration adjustments, and attempt to collect payment. If you pass <code>create_prorations</code>, the prorations are created but not automatically invoiced. If you want to bill the customer for the prorations before the subscription’s renewal date, you need to manually <a href="/docs/api/invoices/create">invoice the customer</a>.</p>
 * <p>If you don’t want to prorate, set the <code>proration_behavior</code> option to <code>none</code>. With this option, the customer is billed <currency>100</currency> on May 1 and <currency>200</currency> on June 1. Similarly, if you set <code>proration_behavior</code> to <code>none</code> when switching between different billing intervals (for example, from monthly to yearly), we don’t generate any credits for the old subscription’s unused time. We still reset the billing date and bill immediately for the new subscription.</p>
 * <p>Updating the quantity on a subscription many times in an hour may result in <a href="/docs/rate-limits">rate limiting</a>. If you need to bill for a frequently changing quantity, consider integrating <a href="/docs/billing/subscriptions/usage-based">usage-based billing</a> instead.</p>
 */
export declare const PostSubscriptionsSubscriptionExposedId: any;
//# sourceMappingURL=PostSubscriptionsSubscriptionExposedId.d.ts.map