import { CommandModule } from 'yargs';
import { GraphQLConfig } from 'graphql-config';
import { loadDocuments, loadSchema } from '@graphql-tools/load';
import { Loader } from '@graphql-tools/utils';
import { LoadConfigOptions } from './types';
export declare type CommandFactory<T = {}, U = {}> = (api: {
    useConfig: (options?: LoadConfigOptions) => Promise<GraphQLConfig>;
    useLoaders: typeof useLoaders;
}) => CommandModule<T, U>;
export declare function defineCommand<T = {}, U = {}>(factory: CommandFactory<T, U>): CommandFactory<T, U>;
export declare function useConfig(options?: LoadConfigOptions): Promise<GraphQLConfig>;
declare type PointerOf<T extends (...args: any) => any> = Parameters<T>[0];
declare type OptionsOf<T extends (...args: any) => any> = Omit<Parameters<T>[1], 'loaders'>;
export declare function useLoaders({ loaders }: {
    loaders: Loader[];
}): {
    loadDocuments(pointer: PointerOf<typeof loadDocuments>, options: OptionsOf<typeof loadDocuments>): Promise<import("graphql-config").Source[]>;
    loadSchema(pointer: PointerOf<typeof loadSchema>, options: OptionsOf<typeof loadSchema>): Promise<import("graphql").GraphQLSchema>;
};
export {};
