import { APIIAMResourceProvider, GraphQLAPIProvider, TransformHostProvider } from '@aws-amplify/graphql-transformer-interfaces';
import { ApiKeyConfig, AuthorizationConfig, AuthorizationType, CfnApiKey, GraphqlApiBase, LogConfig } from '@aws-cdk/aws-appsync';
import { Grant, IGrantable } from '@aws-cdk/aws-iam';
import { CfnResource, Construct } from '@aws-cdk/core';
import { TransformerSchema } from './cdk-compat/schema-asset';
export interface GraphqlApiProps {
    readonly name: string;
    readonly authorizationConfig?: AuthorizationConfig;
    readonly logConfig?: LogConfig;
    readonly schema?: TransformerSchema;
    readonly xrayEnabled?: boolean;
}
export declare class IamResource implements APIIAMResourceProvider {
    static custom(...arns: string[]): IamResource;
    static ofType(type: string, ...fields: string[]): IamResource;
    static all(): IamResource;
    private arns;
    private constructor();
    resourceArns(api: GraphQLAPIProvider): string[];
}
export type TransformerAPIProps = GraphqlApiProps & {
    readonly createApiKey?: boolean;
    readonly host?: TransformHostProvider;
    readonly sandboxModeEnabled?: boolean;
    readonly environmentName?: string;
};
export declare class GraphQLApi extends GraphqlApiBase implements GraphQLAPIProvider {
    readonly apiId: string;
    readonly host: TransformHostProvider;
    readonly arn: string;
    readonly graphqlUrl: string;
    readonly name: string;
    readonly schema: TransformerSchema;
    readonly modes: AuthorizationType[];
    readonly apiKey?: string;
    readonly sandboxModeEnabled?: boolean;
    readonly environmentName?: string;
    private schemaResource;
    private api;
    private apiKeyResource?;
    private authorizationConfig?;
    constructor(scope: Construct, id: string, props: TransformerAPIProps);
    grant(grantee: IGrantable, resources: APIIAMResourceProvider, ...actions: string[]): Grant;
    grantQuery(grantee: IGrantable, ...fields: string[]): Grant;
    grantMutation(grantee: IGrantable, ...fields: string[]): Grant;
    grantSubscription(grantee: IGrantable, ...fields: string[]): Grant;
    createAPIKey(config?: ApiKeyConfig): CfnApiKey;
    addToSchema(content: string): void;
    getDefaultAuthorization(): any;
    private validateAuthorizationProps;
    addSchemaDependency(construct: CfnResource): boolean;
    private setupLogConfig;
    private setupOpenIdConnectConfig;
    private setupUserPoolConfig;
    private setupLambdaConfig;
    private lambdaArnKey;
    private setupAdditionalAuthorizationModes;
}
//# sourceMappingURL=graphql-api.d.ts.map