import * as pulumi from "@pulumi/pulumi";
/**
 * With this resource, you can create a product - [Stripe API product documentation](https://stripe.com/docs/api/products).
 *
 * Products describe the specific goods or services you offer to your customers. For example,
 * you might offer a Standard and Premium version of your goods or service; each version would be a separate Product.
 *
 * > Deleting a product is only possible if it has no prices associated with it.
 *
 * ## Example Usage
 *
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as stripe from "pulumi-stripe";
 *
 * // The product with more fields filled
 * const product = new stripe.Product("product", {
 *     description: "fantastic product",
 *     unitLabel: "piece",
 *     url: "https://www.terraform.io",
 * });
 * ```
 *
 * ## Import
 *
 * ```sh
 * $ pulumi import stripe:index/product:Product product <product_id>
 * ```
 */
export declare class Product extends pulumi.CustomResource {
    /**
     * Get an existing Product 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?: ProductState, opts?: pulumi.CustomResourceOptions): Product;
    /**
     * Returns true if the given object is an instance of Product.  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 Product;
    /**
     * Bool. Whether the product is currently available for purchase. Defaults to `true`.
     */
    readonly active: pulumi.Output<boolean | undefined>;
    /**
     * String. The product’s description, meant to be displayable to the customer. Use this field to optionally store a long form explanation of the product being sold for your own rendering purposes.
     */
    readonly description: pulumi.Output<string | undefined>;
    /**
     * List(String). A list of up to 8 URLs of images for this product, meant to be displayable to the customer.
     */
    readonly images: pulumi.Output<string[] | undefined>;
    /**
     * List(String). A list of up to 15 marketing features for this product. These are displayed in pricing tables.
     */
    readonly marketingFeatures: pulumi.Output<string[] | undefined>;
    /**
     * 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>;
    /**
     * String. The product’s name, meant to be displayable to the customer. Whenever this product is sold via a subscription, name will show up on associated invoice line item descriptions.
     */
    readonly name: pulumi.Output<string>;
    /**
     * Map(Float). The dimensions of this product for shipping purposes. When used these fields are required: `height`,`length`,`width` and `weight`; the precision is 2 decimal places.
     */
    readonly packageDimensions: pulumi.Output<{
        [key: string]: number;
    } | undefined>;
    /**
     * String. The bespoke unique identifier for the object.
     */
    readonly productId: pulumi.Output<string>;
    /**
     * Bool. Whether this product is shipped (i.e., physical goods).
     */
    readonly shippable: pulumi.Output<boolean | undefined>;
    /**
     * String. An arbitrary string to be displayed on your customer’s credit card or bank statement. While most banks display this information consistently, some may display it incorrectly or not at all. This may be up to 22 characters. The statement description may not include `<`,` >`, `\`, `"`, `’` characters, and will appear on your customer’s statement in capital letters. Non-ASCII characters are automatically stripped. It must contain at least one letter.
     */
    readonly statementDescriptor: pulumi.Output<string | undefined>;
    /**
     * String. A tax code ID. Supported values are listed in the TaxCode resource and at https://stripe.com/docs/tax/tax-categories.
     */
    readonly taxCode: pulumi.Output<string | undefined>;
    /**
     * String. A label that represents units of this product in Stripe and on customers’ receipts and invoices. When set, this will be included in associated invoice line item descriptions.
     */
    readonly unitLabel: pulumi.Output<string | undefined>;
    /**
     * String. A URL of a publicly-accessible webpage for this product.
     */
    readonly url: pulumi.Output<string | undefined>;
    /**
     * Create a Product 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?: ProductArgs, opts?: pulumi.CustomResourceOptions);
}
/**
 * Input properties used for looking up and filtering Product resources.
 */
export interface ProductState {
    /**
     * Bool. Whether the product is currently available for purchase. Defaults to `true`.
     */
    active?: pulumi.Input<boolean>;
    /**
     * String. The product’s description, meant to be displayable to the customer. Use this field to optionally store a long form explanation of the product being sold for your own rendering purposes.
     */
    description?: pulumi.Input<string>;
    /**
     * List(String). A list of up to 8 URLs of images for this product, meant to be displayable to the customer.
     */
    images?: pulumi.Input<pulumi.Input<string>[]>;
    /**
     * List(String). A list of up to 15 marketing features for this product. These are displayed in pricing tables.
     */
    marketingFeatures?: pulumi.Input<pulumi.Input<string>[]>;
    /**
     * 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>;
    }>;
    /**
     * String. The product’s name, meant to be displayable to the customer. Whenever this product is sold via a subscription, name will show up on associated invoice line item descriptions.
     */
    name?: pulumi.Input<string>;
    /**
     * Map(Float). The dimensions of this product for shipping purposes. When used these fields are required: `height`,`length`,`width` and `weight`; the precision is 2 decimal places.
     */
    packageDimensions?: pulumi.Input<{
        [key: string]: pulumi.Input<number>;
    }>;
    /**
     * String. The bespoke unique identifier for the object.
     */
    productId?: pulumi.Input<string>;
    /**
     * Bool. Whether this product is shipped (i.e., physical goods).
     */
    shippable?: pulumi.Input<boolean>;
    /**
     * String. An arbitrary string to be displayed on your customer’s credit card or bank statement. While most banks display this information consistently, some may display it incorrectly or not at all. This may be up to 22 characters. The statement description may not include `<`,` >`, `\`, `"`, `’` characters, and will appear on your customer’s statement in capital letters. Non-ASCII characters are automatically stripped. It must contain at least one letter.
     */
    statementDescriptor?: pulumi.Input<string>;
    /**
     * String. A tax code ID. Supported values are listed in the TaxCode resource and at https://stripe.com/docs/tax/tax-categories.
     */
    taxCode?: pulumi.Input<string>;
    /**
     * String. A label that represents units of this product in Stripe and on customers’ receipts and invoices. When set, this will be included in associated invoice line item descriptions.
     */
    unitLabel?: pulumi.Input<string>;
    /**
     * String. A URL of a publicly-accessible webpage for this product.
     */
    url?: pulumi.Input<string>;
}
/**
 * The set of arguments for constructing a Product resource.
 */
export interface ProductArgs {
    /**
     * Bool. Whether the product is currently available for purchase. Defaults to `true`.
     */
    active?: pulumi.Input<boolean>;
    /**
     * String. The product’s description, meant to be displayable to the customer. Use this field to optionally store a long form explanation of the product being sold for your own rendering purposes.
     */
    description?: pulumi.Input<string>;
    /**
     * List(String). A list of up to 8 URLs of images for this product, meant to be displayable to the customer.
     */
    images?: pulumi.Input<pulumi.Input<string>[]>;
    /**
     * List(String). A list of up to 15 marketing features for this product. These are displayed in pricing tables.
     */
    marketingFeatures?: pulumi.Input<pulumi.Input<string>[]>;
    /**
     * 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>;
    }>;
    /**
     * String. The product’s name, meant to be displayable to the customer. Whenever this product is sold via a subscription, name will show up on associated invoice line item descriptions.
     */
    name?: pulumi.Input<string>;
    /**
     * Map(Float). The dimensions of this product for shipping purposes. When used these fields are required: `height`,`length`,`width` and `weight`; the precision is 2 decimal places.
     */
    packageDimensions?: pulumi.Input<{
        [key: string]: pulumi.Input<number>;
    }>;
    /**
     * String. The bespoke unique identifier for the object.
     */
    productId?: pulumi.Input<string>;
    /**
     * Bool. Whether this product is shipped (i.e., physical goods).
     */
    shippable?: pulumi.Input<boolean>;
    /**
     * String. An arbitrary string to be displayed on your customer’s credit card or bank statement. While most banks display this information consistently, some may display it incorrectly or not at all. This may be up to 22 characters. The statement description may not include `<`,` >`, `\`, `"`, `’` characters, and will appear on your customer’s statement in capital letters. Non-ASCII characters are automatically stripped. It must contain at least one letter.
     */
    statementDescriptor?: pulumi.Input<string>;
    /**
     * String. A tax code ID. Supported values are listed in the TaxCode resource and at https://stripe.com/docs/tax/tax-categories.
     */
    taxCode?: pulumi.Input<string>;
    /**
     * String. A label that represents units of this product in Stripe and on customers’ receipts and invoices. When set, this will be included in associated invoice line item descriptions.
     */
    unitLabel?: pulumi.Input<string>;
    /**
     * String. A URL of a publicly-accessible webpage for this product.
     */
    url?: pulumi.Input<string>;
}
