import { Value } from '../../cloudformation/Value';
import { ComponentBindingPropertiesValueProps } from './component/ComponentBindingPropertiesValueProps';
import { ComponentPropertyProps } from './component/ComponentPropertyProps';
import { ComponentDataConfigurationProps } from './component/ComponentDataConfigurationProps';
import { ComponentVariantProps } from './component/ComponentVariantProps';
import { ComponentEventProps } from './component/ComponentEventProps';
import { ComponentChildProps } from './component/ComponentChildProps';
import { Attribute } from '../../cloudformation/Attribute';
import { AwsResource } from '../../cloudformation/resources/AwsResource';
export type ComponentAttributes = {
    Id: Attribute<string>;
};
export type Component = AwsResource<'AWS::AmplifyUIBuilder::Component', ComponentProperties, ComponentAttributes>;
/**
  The AWS::AmplifyUIBuilder::Component resource specifies a component within an Amplify app. A component is a user interface (UI) element that you can customize. Use <code>ComponentChild</code> to configure an instance of a <code>Component</code>. A <code>ComponentChild</code> instance inherits the configuration of the main <code>Component</code>.
  For full documentation go to <a href="http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-amplifyuibuilder-component.html">the AWS Docs</a>
*/
export declare function component(componentProps: ComponentProperties): Component;
/**
  The AWS::AmplifyUIBuilder::Component resource specifies a component within an Amplify app. A component is a user interface (UI) element that you can customize. Use <code>ComponentChild</code> to configure an instance of a <code>Component</code>. A <code>ComponentChild</code> instance inherits the configuration of the main <code>Component</code>.
  For full documentation go to <a href="http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-amplifyuibuilder-component.html">the AWS Docs</a>
*/
export interface ComponentProperties {
    /** <code>ComponentType</code>  <a name="cfn-amplifyuibuilder-component-componenttype"></a>
  The type of the component. This can be an Amplify custom UI component or another custom component.<br />
  
  Required: Yes<br />
  
  Update requires: <a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt">No interruption</a> */
    componentType: Value<string>;
    /** <code>SchemaVersion</code>  <a name="cfn-amplifyuibuilder-component-schemaversion"></a>
  The schema version of the component when it was imported.<br />
  
  Required: No<br />
  
  Update requires: <a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt">No interruption</a> */
    schemaVersion?: Value<string>;
    /** <code>EnvironmentName</code>  <a name="cfn-amplifyuibuilder-component-environmentname"></a>
  The name of the backend environment that is a part of the Amplify app.<br />
  
  Required: No<br />
  
  Update requires: <a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt">No interruption</a> */
    environmentName?: Value<string>;
    /** <p> */
    bindingProperties: {
        [key: string]: ComponentBindingPropertiesValueProps;
    };
    /** <code>SourceId</code>  <a name="cfn-amplifyuibuilder-component-sourceid"></a>
  The unique ID of the component in its original source system, such as Figma.<br />
  
  Required: No<br />
  
  Update requires: <a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt">No interruption</a> */
    sourceId?: Value<string>;
    /** <code>Properties</code>  <a name="cfn-amplifyuibuilder-component-properties"></a>
  Describes the component’s properties. You can’t specify <code>tags</code> as a valid property for <code>properties</code>.<br />
  
  Required: Yes<br />
  
  Update requires: <a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt">No interruption</a> */
    properties: {
        [key: string]: ComponentPropertyProps;
    };
    /** <code>CollectionProperties</code>  <a name="cfn-amplifyuibuilder-component-collectionproperties"></a>
  The data binding configuration for the component’s properties. Use this for a collection component. You can’t specify <code>tags</code> as a valid property for <code>collectionProperties</code>.<br />
  
  Required: No<br />
  
  Update requires: <a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt">No interruption</a> */
    collectionProperties?: {
        [key: string]: ComponentDataConfigurationProps;
    };
    /** <code>Name</code>  <a name="cfn-amplifyuibuilder-component-name"></a>
  The name of the component.<br />
  
  Required: Yes<br />
  
  Update requires: <a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt">No interruption</a> */
    name: Value<string>;
    /** <code>Variants</code>  <a name="cfn-amplifyuibuilder-component-variants"></a>
  A list of the component’s variants. A variant is a unique style configuration of a main component.<br />
  
  Required: Yes<br />
  
  Update requires: <a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt">No interruption</a> */
    variants: ComponentVariantProps[];
    /** <code>AppId</code>  <a name="cfn-amplifyuibuilder-component-appid"></a>
  The unique ID of the Amplify app associated with the component.<br />
  
  Required: No<br />
  
  Update requires: <a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt">No interruption</a> */
    appId?: Value<string>;
    /** <code>Events</code>  <a name="cfn-amplifyuibuilder-component-events"></a>
  Describes the events that can be raised on the component. Use for the workflow feature in Amplify Studio that allows you to bind events and actions to components.<br />
  
  Required: No<br />
  
  Update requires: <a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt">No interruption</a> */
    events?: {
        [key: string]: ComponentEventProps;
    };
    /** <code>Overrides</code>  <a name="cfn-amplifyuibuilder-component-overrides"></a>
  Describes the component’s properties that can be overriden in a customized instance of the component. You can’t specify <code>tags</code> as a valid property for <code>overrides</code>.<br />
  
  Required: Yes<br />
  
  Update requires: <a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt">No interruption</a> */
    overrides: Value<any>;
    /** <code>Children</code>  <a name="cfn-amplifyuibuilder-component-children"></a>
  A list of the component’s <code>ComponentChild</code> instances.<br />
  
  Required: No<br />
  
  Update requires: <a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt">No interruption</a> */
    children?: ComponentChildProps[];
    /** <code>Tags</code>  <a name="cfn-amplifyuibuilder-component-tags"></a>
  One or more key-value pairs to use when tagging the component.<br />
  
  Required: No<br />
  
  Update requires: <a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-replacement">Replacement</a> */
    tags?: Value<{
        [key: string]: Value<string>;
    }>;
}
