// *** WARNING: this file was generated by test. ***
// *** Do not edit by hand unless you're certain you know what you are doing! ***

import * as pulumi from "@pulumi/pulumi";
import { input as inputs, output as outputs, enums } from "../types";

/**
 * Configuration filters
 */
export interface ConfigurationFiltersArgs {
    /**
     * Filters specific to product
     */
    filterableProperty?: pulumi.Input<pulumi.Input<inputs.FilterablePropertyArgs>[]>;
    /**
     * Product hierarchy information
     */
    hierarchyInformation: pulumi.Input<inputs.HierarchyInformationArgs>;
}

/**
 * Configuration filters
 */
export interface ConfigurationFilters {
    /**
     * Filters specific to product
     */
    filterableProperty?: inputs.FilterableProperty[];
    /**
     * Product hierarchy information
     */
    hierarchyInformation: inputs.HierarchyInformation;
}

/**
 * Holds Customer subscription details. Clients can display available products to unregistered customers by explicitly passing subscription details
 */
export interface CustomerSubscriptionDetails {
    /**
     * Location placement Id of a subscription
     */
    locationPlacementId?: string;
    /**
     * Quota ID of a subscription
     */
    quotaId: string;
    /**
     * List of registered feature flags for subscription
     */
    registeredFeatures?: inputs.CustomerSubscriptionRegisteredFeatures[];
}

/**
 * Holds Customer subscription details. Clients can display available products to unregistered customers by explicitly passing subscription details
 */
export interface CustomerSubscriptionDetailsArgs {
    /**
     * Location placement Id of a subscription
     */
    locationPlacementId?: pulumi.Input<string>;
    /**
     * Quota ID of a subscription
     */
    quotaId: pulumi.Input<string>;
    /**
     * List of registered feature flags for subscription
     */
    registeredFeatures?: pulumi.Input<pulumi.Input<inputs.CustomerSubscriptionRegisteredFeaturesArgs>[]>;
}

/**
 * Represents subscription registered features
 */
export interface CustomerSubscriptionRegisteredFeatures {
    /**
     * Name of subscription registered feature
     */
    name?: string;
    /**
     * State of subscription registered feature
     */
    state?: string;
}

/**
 * Represents subscription registered features
 */
export interface CustomerSubscriptionRegisteredFeaturesArgs {
    /**
     * Name of subscription registered feature
     */
    name?: pulumi.Input<string>;
    /**
     * State of subscription registered feature
     */
    state?: pulumi.Input<string>;
}

/**
 * Different types of filters supported and its values.
 */
export interface FilterableProperty {
    /**
     * Values to be filtered.
     */
    supportedValues: string[];
    /**
     * Type of product filter.
     */
    type: string | enums.SupportedFilterTypes;
}

/**
 * Different types of filters supported and its values.
 */
export interface FilterablePropertyArgs {
    /**
     * Values to be filtered.
     */
    supportedValues: pulumi.Input<pulumi.Input<string>[]>;
    /**
     * Type of product filter.
     */
    type: pulumi.Input<string | enums.SupportedFilterTypes>;
}

/**
 * Holds details about product hierarchy information
 */
export interface HierarchyInformation {
    /**
     * Represents configuration name that uniquely identifies configuration
     */
    configurationName?: string;
    /**
     * Represents product family name that uniquely identifies product family
     */
    productFamilyName?: string;
    /**
     * Represents product line name that uniquely identifies product line
     */
    productLineName?: string;
    /**
     * Represents product name that uniquely identifies product
     */
    productName?: string;
}

/**
 * Holds details about product hierarchy information
 */
export interface HierarchyInformationArgs {
    /**
     * Represents configuration name that uniquely identifies configuration
     */
    configurationName?: pulumi.Input<string>;
    /**
     * Represents product family name that uniquely identifies product family
     */
    productFamilyName?: pulumi.Input<string>;
    /**
     * Represents product line name that uniquely identifies product line
     */
    productLineName?: pulumi.Input<string>;
    /**
     * Represents product name that uniquely identifies product
     */
    productName?: pulumi.Input<string>;
}

