import { AnyNestedObject } from 'protobufjs';
import protobufjs from 'protobufjs';
import { Logger, MeshHandler, MeshHandlerOptions, YamlConfig } from '@graphql-mesh/types';
import { ChannelCredentials, loadPackageDefinition } from '@grpc/grpc-js';
import './patchLongJs.js';
type RootJsonEntry = {
    name: string;
    rootJson: protobufjs.INamespace;
};
export default class GrpcHandler implements MeshHandler {
    private config;
    private baseDir;
    private rootJsonEntries;
    private logger;
    private pubsub;
    constructor({ config, baseDir, store, logger, pubsub, }: MeshHandlerOptions<YamlConfig.GrpcHandler>);
    processReflection(creds: ChannelCredentials): Promise<Promise<protobufjs.Root>[]>;
    processDescriptorFile(): Promise<protobufjs.Root>;
    processProtoFile(): Promise<protobufjs.Root>;
    getCachedDescriptorSets(creds: ChannelCredentials): Promise<RootJsonEntry[]>;
    getCredentials(): Promise<ChannelCredentials>;
    walkToFindTypePath(rootJson: protobufjs.INamespace, pathWithName: string[], baseTypePath: string[]): string[];
    visit({ nested, name, currentPath, rootJson, creds, grpcObject, rootLogger: logger, }: {
        nested: AnyNestedObject;
        name: string;
        currentPath: string[];
        rootJson: protobufjs.INamespace;
        creds: ChannelCredentials;
        grpcObject: ReturnType<typeof loadPackageDefinition>;
        rootLogger: Logger;
    }): void;
    private schemaComposer;
    getMeshSource(): Promise<{
        schema: import("graphql").GraphQLSchema;
    }>;
}
export {};
