/// <reference types="src/types" />
import { EnumTypeComposer, ObjectTypeComposerArgumentConfigDefinition, ObjectTypeComposerFieldConfigMapDefinition, ObjectTypeComposerArgumentConfigAsObjectDefinition, ObjectTypeComposerFieldConfigAsObjectDefinition } from 'graphql-compose';
export declare type ElasticParamConfigT = {
    type: string;
    name?: string;
    options?: any;
    default?: any;
};
export declare type ElasticCaSettingsUrlT = {
    fmt: string;
    req: {
        [name: string]: ElasticParamConfigT;
    };
};
export declare type ElasticCaSettingsT = {
    params: {
        [name: string]: ElasticParamConfigT;
    };
    url?: ElasticCaSettingsUrlT;
    urls?: ElasticCaSettingsUrlT[];
    needBody?: true;
    method?: string;
};
export declare type ElasticParsedArgsDescriptionsT = {
    [argName: string]: string | undefined;
};
export declare type ElasticParsedSourceT = {
    [dottedMethodName: string]: {
        elasticMethod: string | string[];
        description: string | undefined;
        argsSettings: ElasticCaSettingsT | undefined;
        argsDescriptions: ElasticParsedArgsDescriptionsT;
    };
};
export declare type ElasticApiParserOptsT = {
    elasticClient?: any;
    apiVersion?: string;
    prefix?: string;
    elasticApiFilePath?: string;
};
export default class ElasticApiParser {
    cachedEnums: {
        [fieldName: string]: {
            [stringifiedValues: string]: EnumTypeComposer<any>;
        };
    };
    apiVersion: string;
    prefix: string;
    elasticClient: any;
    parsedSource: ElasticParsedSourceT;
    constructor(opts?: ElasticApiParserOptsT);
    static loadFile(absolutePath: string): string;
    static loadApiFile(absolutePath: string): string;
    static loadApiListFile(absolutePath: string): string;
    static findApiVersionFile(version: string): string;
    static cleanUpSource(code: string): string;
    static parseParamsDescription(doxItemAST: any): {
        [fieldName: string]: string | undefined;
    };
    static cleanupDescription(str: string): string | undefined;
    static cleanupParamName(str: string): string | undefined;
    static codeToSettings(code: string): ElasticCaSettingsT | undefined;
    static getMethodName(str: string): string | string[];
    static parseSource(source: string): ElasticParsedSourceT;
    generateFieldMap(): ObjectTypeComposerFieldConfigAsObjectDefinition<any, any>;
    generateFieldConfig(methodName: string, methodArgs?: {
        [paramName: string]: any;
    }): {
        type: string;
        description: string | undefined;
        args: ObjectTypeComposerArgumentConfigAsObjectDefinition;
        resolve: (_source: any, args: any, context: any, _info: any) => any;
    };
    paramToGraphQLArgConfig(paramCfg: ElasticParamConfigT, fieldName: string, description?: string): ObjectTypeComposerArgumentConfigDefinition;
    paramTypeToGraphQL(paramCfg: ElasticParamConfigT, fieldName: string): EnumTypeComposer<any> | string;
    getEnumType(fieldName: string, values: ReadonlyArray<any>): EnumTypeComposer<any>;
    settingsToArgMap(settings?: ElasticCaSettingsT, descriptions?: ElasticParsedArgsDescriptionsT): ObjectTypeComposerArgumentConfigAsObjectDefinition;
    reassembleNestedFields(fields: ObjectTypeComposerFieldConfigMapDefinition<any, any>): ObjectTypeComposerFieldConfigAsObjectDefinition<any, any>;
}
//# sourceMappingURL=ElasticApiParser.d.ts.map