import { FunctionDefinitionVersionProps } from './functiondefinition/FunctionDefinitionVersionProps';
import { Value } from '../../cloudformation/Value';
import { Attribute } from '../../cloudformation/Attribute';
import { AwsResource } from '../../cloudformation/resources/AwsResource';
export type FunctionDefinitionAttributes = {
    LatestVersionArn: Attribute<string>;
    Id: Attribute<string>;
    Arn: Attribute<string>;
    Name: Attribute<string>;
};
export type FunctionDefinition = AwsResource<'AWS::Greengrass::FunctionDefinition', FunctionDefinitionProperties, FunctionDefinitionAttributes>;
/**
  The <code>AWS::Greengrass::FunctionDefinition</code> resource represents a function definition for AWS IoT Greengrass. Function definitions are used to organize your function definition versions.
  For full documentation go to <a href="http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-greengrass-functiondefinition.html">the AWS Docs</a>
*/
export declare function functionDefinition(functionDefinitionProps: FunctionDefinitionProperties): FunctionDefinition;
/**
  The <code>AWS::Greengrass::FunctionDefinition</code> resource represents a function definition for AWS IoT Greengrass. Function definitions are used to organize your function definition versions.
  For full documentation go to <a href="http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-greengrass-functiondefinition.html">the AWS Docs</a>
*/
export interface FunctionDefinitionProperties {
    /** <code>InitialVersion</code>  <a name="cfn-greengrass-functiondefinition-initialversion"></a>
  The function definition version to include when the function definition is created. A function definition version contains a list of <a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-greengrass-functiondefinition-function.html">https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-greengrass-functiondefinition-function.html</a> property types.<br />
  To associate a function definition version after the function definition is created, create an <a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-greengrass-functiondefinitionversion.html">https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-greengrass-functiondefinitionversion.html</a> resource and specify the ID of this function definition.
  
  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> */
    initialVersion?: FunctionDefinitionVersionProps;
    /** <code>Tags</code>  <a name="cfn-greengrass-functiondefinition-tags"></a>
  Application-specific metadata to attach to the function definition. You can use tags in IAM policies to control access to AWS IoT Greengrass resources. You can also use tags to categorize your resources. For more information, see <a href="https://docs.aws.amazon.com/greengrass/latest/developerguide/tagging.html">Tagging Your AWS IoT Greengrass Resources</a> in the
  AWS IoT Greengrass Version 1 Developer Guide: br />
  This <code>Json</code> property type is processed as a map of key-value pairs. It uses the following format, which is different from most <code>Tags</code> implementations in AWS CloudFormation templates. */
    tags?: Value<any>;
    /** <code>Name</code>  <a name="cfn-greengrass-functiondefinition-name"></a>
  The name of the function definition.<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>;
}
