import { OpenIDConnectConfigProps } from './graphqlapi/OpenIDConnectConfigProps';
import { Value } from '../../cloudformation/Value';
import { AdditionalAuthenticationProviderProps } from './graphqlapi/AdditionalAuthenticationProviderProps';
import { LambdaAuthorizerConfigProps } from './graphqlapi/LambdaAuthorizerConfigProps';
import { UserPoolConfigProps } from './graphqlapi/UserPoolConfigProps';
import { Tag } from '../Tag';
import { LogConfigProps } from './graphqlapi/LogConfigProps';
import { Attribute } from '../../cloudformation/Attribute';
import { AwsResource } from '../../cloudformation/resources/AwsResource';
export type GraphQLApiAttributes = {
    RealtimeUrl: Attribute<string>;
    GraphQLUrl: Attribute<string>;
    GraphQLDns: Attribute<string>;
    RealtimeDns: Attribute<string>;
    Arn: Attribute<string>;
    ApiId: Attribute<string>;
};
export type GraphQLApi = AwsResource<'AWS::AppSync::GraphQLApi', GraphQLApiProperties, GraphQLApiAttributes>;
/**
  The <code>AWS::AppSync::GraphQLApi</code> resource creates a new AWS AppSync GraphQL API. This is the top-level construct for your application. For more information, see <a href="https://docs.aws.amazon.com/appsync/latest/devguide/quickstart.html">Quick Start</a> in the <em>AWS AppSync Developer Guide</em>.
  For full documentation go to <a href="http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-graphqlapi.html">the AWS Docs</a>
*/
export declare function graphQLApi(graphQLApiProps: GraphQLApiProperties): GraphQLApi;
/**
  The <code>AWS::AppSync::GraphQLApi</code> resource creates a new AWS AppSync GraphQL API. This is the top-level construct for your application. For more information, see <a href="https://docs.aws.amazon.com/appsync/latest/devguide/quickstart.html">Quick Start</a> in the <em>AWS AppSync Developer Guide</em>.
  For full documentation go to <a href="http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-graphqlapi.html">the AWS Docs</a>
*/
export interface GraphQLApiProperties {
    /** <code>OpenIDConnectConfig</code>  <a name="cfn-appsync-graphqlapi-openidconnectconfig"></a>
  The OpenID Connect configuration.<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> */
    openIDConnectConfig?: OpenIDConnectConfigProps;
    /** <code>MergedApiExecutionRoleArn</code>  <a name="cfn-appsync-graphqlapi-mergedapiexecutionrolearn"></a>
  The AWS Identity and Access Management service role ARN for a merged API. The AppSync service assumes this role on behalf of the Merged API to validate access to source APIs at runtime and to prompt the <code>AUTO_MERGE</code> to update the merged API endpoint with the source API changes automatically.<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> */
    mergedApiExecutionRoleArn?: Value<string>;
    /** <code>OwnerContact</code>  <a name="cfn-appsync-graphqlapi-ownercontact"></a>
  The owner contact information for an API resource.<br />
  This field accepts any string input with a length of 0 - 256 characters.<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> */
    ownerContact?: Value<string>;
    /** <code>Name</code>  <a name="cfn-appsync-graphqlapi-name"></a>
  The API name.<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>AdditionalAuthenticationProviders</code>  <a name="cfn-appsync-graphqlapi-additionalauthenticationproviders"></a>
  A list of additional authentication providers for the <code>GraphqlApi</code> API.<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> */
    additionalAuthenticationProviders?: AdditionalAuthenticationProviderProps[];
    /** <code>ApiType</code>  <a name="cfn-appsync-graphqlapi-apitype"></a>
  The value that indicates whether the GraphQL API is a standard API (<code>GRAPHQL</code>) or merged API (<code>MERGED</code>).<br />
  <strong>WARNING</strong>: If the <code>ApiType</code> has not been defined, <strong>explicitly</strong> setting it to <code>GRAPHQL</code> in a template/stack update will result in an API replacement and new DNS values.<br />
  The following values are valid:<br />
  <code>GRAPHQL | MERGED</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> */
    apiType?: Value<string>;
    /** <code>LambdaAuthorizerConfig</code>  <a name="cfn-appsync-graphqlapi-lambdaauthorizerconfig"></a>
  A <code>LambdaAuthorizerConfig</code> holds configuration on how to authorize AWS AppSync API access when using the <code>AWS_LAMBDA</code> authorizer mode. Be aware that an AWS AppSync API may have only one Lambda authorizer configured at a time.<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> */
    lambdaAuthorizerConfig?: LambdaAuthorizerConfigProps;
    /** <code>XrayEnabled</code>  <a name="cfn-appsync-graphqlapi-xrayenabled"></a>
  A flag indicating whether to use AWS X-Ray tracing for this <code>GraphqlApi</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> */
    xrayEnabled?: Value<boolean>;
    /** <code>Visibility</code>  <a name="cfn-appsync-graphqlapi-visibility"></a>
  Sets the scope of the GraphQL API to public (<code>GLOBAL</code>) or private (<code>PRIVATE</code>). By default, the scope is set to <code>Global</code> if no value is provided.<br />
  <strong>WARNING</strong>: If <code>Visibility</code> has not been defined, <strong>explicitly</strong> setting it to <code>GLOBAL</code> in a template/stack update will result in an API replacement and new DNS values.<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> */
    visibility?: Value<string>;
    /** <code>UserPoolConfig</code>  <a name="cfn-appsync-graphqlapi-userpoolconfig"></a>
  Optional authorization configuration for using Amazon Cognito user pools with your GraphQL endpoint.<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> */
    userPoolConfig?: UserPoolConfigProps;
    /** <code>Tags</code>  <a name="cfn-appsync-graphqlapi-tags"></a>
  An arbitrary set of tags (key-value pairs) for this GraphQL API.<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> */
    tags?: Tag[];
    /** <code>AuthenticationType</code>  <a name="cfn-appsync-graphqlapi-authenticationtype"></a>
  Security configuration for your GraphQL API. For allowed values (such as <code>API_KEY</code>, <code>AWS_IAM</code>, <code>AMAZON_COGNITO_USER_POOLS</code>, <code>OPENID_CONNECT</code>, or <code>AWS_LAMBDA</code>), see <a href="https://docs.aws.amazon.com/appsync/latest/devguide/security.html">Security</a> in the
  AWS AppSync Developer Guide: 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> */
    authenticationType: Value<string>;
    /** <code>LogConfig</code>  <a name="cfn-appsync-graphqlapi-logconfig"></a>
  The Amazon CloudWatch Logs configuration.<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> */
    logConfig?: LogConfigProps;
}
