import * as pulumi from "@pulumi/pulumi";
import * as inputs from "./types/input";
import * as outputs from "./types/output";
/**
 * With this resource, you can create a Customer Portal Configuration - [Stripe API portal configuration documentation](https://stripe.com/docs/api/customer_portal/configuration).
 *
 * The Billing customer portal is a Stripe-hosted UI for subscription and billing management.
 *
 * A portal configuration describes the functionality and features that you want to provide to your customers through the portal.
 *
 * > Removal of the Customer Portal isn't supported through the Stripe API.
 *
 * ## Example Usage
 *
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as stripe from "pulumi-stripe";
 *
 * // A billing portal using all the available options
 * const portalConfiguration = new stripe.PortalConfiguration("portalConfiguration", {
 *     businessProfile: {
 *         headline: "My special headline",
 *         privacyPolicyUrl: "https://example.com/privacy",
 *         termsOfServiceUrl: "https://example.com/terms",
 *     },
 *     defaultReturnUrl: "https://example.com/special_headline",
 *     features: {
 *         customerUpdate: {
 *             allowedUpdates: [
 *                 "email",
 *                 "address",
 *                 "shipping",
 *                 "phone",
 *                 "tax_id",
 *             ],
 *             enabled: true,
 *         },
 *         invoiceHistory: {
 *             enabled: true,
 *         },
 *         paymentMethodUpdate: {
 *             enabled: true,
 *         },
 *         subscriptionCancel: {
 *             cancellationReason: {
 *                 enabled: true,
 *                 options: [
 *                     "too_expensive",
 *                     "missing_features",
 *                     "switched_service",
 *                     "unused",
 *                     "customer_service",
 *                     "too_complex",
 *                     "low_quality",
 *                     "other",
 *                 ],
 *             },
 *             enabled: true,
 *             mode: "at_period_end",
 *             prorationBehavior: "none",
 *         },
 *         subscriptionUpdates: [{
 *             defaultAllowedUpdates: [
 *                 "price",
 *                 "quantity",
 *                 "promotion_code",
 *             ],
 *             enabled: true,
 *             products: [{
 *                 prices: [
 *                     "my_price_id1",
 *                     "my_price_id2",
 *                 ],
 *                 product: "my_product_id",
 *             }],
 *             prorationBehavior: "none",
 *         }],
 *     },
 *     metadata: {
 *         foo: "bar",
 *     },
 * });
 * ```
 *
 * ## Import
 *
 * ```sh
 * $ pulumi import stripe:index/portalConfiguration:PortalConfiguration configuration <portal_configuration_id>
 * ```
 */
export declare class PortalConfiguration extends pulumi.CustomResource {
    /**
     * Get an existing PortalConfiguration resource's state with the given name, ID, and optional extra
     * properties used to qualify the lookup.
     *
     * @param name The _unique_ name of the resulting resource.
     * @param id The _unique_ provider ID of the resource to lookup.
     * @param state Any extra arguments used during the lookup.
     * @param opts Optional settings to control the behavior of the CustomResource.
     */
    static get(name: string, id: pulumi.Input<pulumi.ID>, state?: PortalConfigurationState, opts?: pulumi.CustomResourceOptions): PortalConfiguration;
    /**
     * Returns true if the given object is an instance of PortalConfiguration.  This is designed to work even
     * when multiple copies of the Pulumi SDK have been loaded into the same process.
     */
    static isInstance(obj: any): obj is PortalConfiguration;
    /**
     * Bool. Whether the configuration is active and can be used to create portal sessions. (On create it is always set as `true`)
     */
    readonly active: pulumi.Output<boolean | undefined>;
    /**
     * List(Resource). The business information shown to customers in the portal. More details in Business Profile section
     */
    readonly businessProfile: pulumi.Output<outputs.PortalConfigurationBusinessProfile>;
    /**
     * String. The default URL to redirect customers to when they click on the portal’s link to return to your website. This can be overriden when creating the session.
     */
    readonly defaultReturnUrl: pulumi.Output<string | undefined>;
    /**
     * List(Resource). Information about the features available in the portal. Feature section described in Feature section
     */
    readonly features: pulumi.Output<outputs.PortalConfigurationFeatures>;
    /**
     * Bool. Whether the configuration is the default.
     */
    readonly isDefault: pulumi.Output<boolean>;
    /**
     * List(Resource). The hosted login page for this configuration. See details in Login Page Section.
     */
    readonly loginPage: pulumi.Output<outputs.PortalConfigurationLoginPage>;
    /**
     * Map(String). Set of key-value pairs that you can attach to an object. This can be useful for storing additional information about the object in a structured format.
     */
    readonly metadata: pulumi.Output<{
        [key: string]: string;
    } | undefined>;
    /**
     * Create a PortalConfiguration resource with the given unique name, arguments, and options.
     *
     * @param name The _unique_ name of the resource.
     * @param args The arguments to use to populate this resource's properties.
     * @param opts A bag of options that control this resource's behavior.
     */
    constructor(name: string, args: PortalConfigurationArgs, opts?: pulumi.CustomResourceOptions);
}
/**
 * Input properties used for looking up and filtering PortalConfiguration resources.
 */
export interface PortalConfigurationState {
    /**
     * Bool. Whether the configuration is active and can be used to create portal sessions. (On create it is always set as `true`)
     */
    active?: pulumi.Input<boolean>;
    /**
     * List(Resource). The business information shown to customers in the portal. More details in Business Profile section
     */
    businessProfile?: pulumi.Input<inputs.PortalConfigurationBusinessProfile>;
    /**
     * String. The default URL to redirect customers to when they click on the portal’s link to return to your website. This can be overriden when creating the session.
     */
    defaultReturnUrl?: pulumi.Input<string>;
    /**
     * List(Resource). Information about the features available in the portal. Feature section described in Feature section
     */
    features?: pulumi.Input<inputs.PortalConfigurationFeatures>;
    /**
     * Bool. Whether the configuration is the default.
     */
    isDefault?: pulumi.Input<boolean>;
    /**
     * List(Resource). The hosted login page for this configuration. See details in Login Page Section.
     */
    loginPage?: pulumi.Input<inputs.PortalConfigurationLoginPage>;
    /**
     * Map(String). Set of key-value pairs that you can attach to an object. This can be useful for storing additional information about the object in a structured format.
     */
    metadata?: pulumi.Input<{
        [key: string]: pulumi.Input<string>;
    }>;
}
/**
 * The set of arguments for constructing a PortalConfiguration resource.
 */
export interface PortalConfigurationArgs {
    /**
     * Bool. Whether the configuration is active and can be used to create portal sessions. (On create it is always set as `true`)
     */
    active?: pulumi.Input<boolean>;
    /**
     * List(Resource). The business information shown to customers in the portal. More details in Business Profile section
     */
    businessProfile: pulumi.Input<inputs.PortalConfigurationBusinessProfile>;
    /**
     * String. The default URL to redirect customers to when they click on the portal’s link to return to your website. This can be overriden when creating the session.
     */
    defaultReturnUrl?: pulumi.Input<string>;
    /**
     * List(Resource). Information about the features available in the portal. Feature section described in Feature section
     */
    features: pulumi.Input<inputs.PortalConfigurationFeatures>;
    /**
     * List(Resource). The hosted login page for this configuration. See details in Login Page Section.
     */
    loginPage?: pulumi.Input<inputs.PortalConfigurationLoginPage>;
    /**
     * Map(String). Set of key-value pairs that you can attach to an object. This can be useful for storing additional information about the object in a structured format.
     */
    metadata?: pulumi.Input<{
        [key: string]: pulumi.Input<string>;
    }>;
}
