import { HttpRouteIntegration } from "@aws-cdk/aws-apigatewayv2-alpha";
import { Construct } from "constructs";
import { Api, ApiFunctionRouteProps, ApiProps } from "./Api.js";
import { Function as Fn, FunctionDefinition } from "./Function.js";
export interface GraphQLApiProps extends Omit<ApiProps, "routes"> {
    /**
     * Path to graphql-codegen configuration file
     *
     * @example
     * ```js
     * new GraphQLApi(stack, "api", {
     *   codegen: "./graphql/codegen.yml"
     * })
     * ```
     */
    codegen?: string;
    /**
     * Path to function that will be invoked to resolve GraphQL queries.
     *
     * @example
     * ```js
     * new GraphQLApi(stack, "api", {
     *   codegen: "./graphql/codegen.yml"
     * })
     * ```
     */
    server: FunctionDefinition;
    rootPath?: string;
}
/**
 * The `GraphQLApi` construct is a higher level CDK construct that makes it easy to create GraphQL servers with AWS Lambda.
 *
 * @example
 *
 * ```js
 * import { GraphQLApi } from "@serverless-stack/resources";
 *
 * new GraphQLApi(stack, "Api", {
 *   server: "src/graphql.handler",
 * });
 * ```
 */
export declare class GraphQLApi extends Api {
    private readonly codegen?;
    private lambdaIntegration?;
    private rootPath?;
    constructor(scope: Construct, id: string, props: GraphQLApiProps);
    get serverFunction(): Fn;
    protected createFunctionIntegration(scope: Construct, routeKey: string, routeProps: ApiFunctionRouteProps<string>, postfixName: string): HttpRouteIntegration;
    getConstructMetadata(): {
        data: {
            graphql: true;
            codegen: string | undefined;
            url: string | undefined;
            httpApiId: string;
            customDomainUrl: string | undefined;
            routes: ({
                type: "function";
                route: string;
                fn: {
                    node: string;
                    stack: string;
                } | undefined;
                schema?: undefined;
                output?: undefined;
                commands?: undefined;
            } | {
                type: "pothos";
                route: string;
                fn: {
                    node: string;
                    stack: string;
                } | undefined;
                schema: string | undefined;
                output: string | undefined;
                commands: string[] | undefined;
            } | {
                type: "url" | "alb";
                route: string;
                fn?: undefined;
                schema?: undefined;
                output?: undefined;
                commands?: undefined;
            })[];
        };
        type: "Api";
    };
}
