import { SlotRegistry } from '@teambit/harmony';
import { GraphQLModule } from '@graphql-modules/core';
export declare type GraphQLConfig = {
    port: number;
};
export declare type ModuleRegistry = SlotRegistry<GraphQLModule>;
export declare class GraphQLExtension {
    readonly config: GraphQLConfig;
    private moduleSlot;
    static dependencies: never[];
    constructor(config: GraphQLConfig, moduleSlot: ModuleRegistry);
    private createRootModule;
    listen(port?: number): Promise<void>;
    getSchema(): GraphQLModule<any, any, any, Partial<{
        [key: string]: import("graphql").GraphQLScalarType | import("graphql-tools").IEnumResolver | import("graphql-tools").IResolverOptions<any, any, any> | (() => any) | Partial<import("graphql-tools").IResolverObject<any, any, any>>;
    }>>;
    register(module: GraphQLModule): this;
    static slots: ((registerFn: () => string) => SlotRegistry<GraphQLModule<any, any, any, Partial<{
        [key: string]: import("graphql").GraphQLScalarType | import("graphql-tools").IEnumResolver | import("graphql-tools").IResolverOptions<any, any, any> | (() => any) | Partial<import("graphql-tools").IResolverObject<any, any, any>>;
    }>>>)[];
    static defaultConfig: {
        port: number;
    };
    static provider(deps: any, config: GraphQLConfig, [moduleSlot]: [ModuleRegistry]): Promise<GraphQLExtension>;
}
