import { Constructor, InternalModuleDeclaration, LoaderOptions, Logger, MedusaContainer, ModuleExports, ModuleLoaderFunction, ModuleProviderExports, ModuleProviderLoaderFunction, ModuleResolution } from "@medusajs/types";
type ModuleResource = {
    services: Function[];
    models: Function[];
    repositories: Function[];
    loaders: ModuleLoaderFunction[] | ModuleProviderLoaderFunction[];
    moduleService: Constructor<any>;
    normalizedPath: string;
};
type MigrationFunction = (options: LoaderOptions<any>, moduleDeclaration?: InternalModuleDeclaration) => Promise<{
    name: string;
    path: string;
}[]>;
type RevertMigrationFunction = (options: LoaderOptions<any> & {
    migrationNames?: string[];
}, moduleDeclaration?: InternalModuleDeclaration) => Promise<void>;
type GenerateMigrationFunction = (options: LoaderOptions<any>, moduleDeclaration?: InternalModuleDeclaration) => Promise<void>;
type ResolvedModule = ModuleExports & {
    discoveryPath: string;
};
type ResolvedModuleProvider = ModuleProviderExports & {
    discoveryPath: string;
};
export declare function resolveModuleExports({ resolution, }: {
    resolution: ModuleResolution;
}): Promise<ResolvedModule | ResolvedModuleProvider | {
    error: any;
}>;
export declare function loadInternalModule(args: {
    container: MedusaContainer;
    resolution: ModuleResolution;
    logger: Logger;
    migrationOnly?: boolean;
    loaderOnly?: boolean;
    loadingProviders?: boolean;
    schemaOnly?: boolean;
}): Promise<{
    error?: Error;
} | void>;
export declare function loadModuleMigrations(container: MedusaContainer, resolution: ModuleResolution, moduleExports?: ModuleExports): Promise<{
    runMigrations?: MigrationFunction;
    revertMigration?: RevertMigrationFunction;
    generateMigration?: GenerateMigrationFunction;
}>;
export declare function loadResources({ container, moduleResolution, discoveryPath, logger, loadedModuleLoaders, }: {
    container: MedusaContainer;
    moduleResolution: ModuleResolution;
    discoveryPath: string;
    logger?: Logger;
    loadedModuleLoaders?: ModuleLoaderFunction[] | ModuleProviderLoaderFunction[];
}): Promise<ModuleResource>;
export {};
//# sourceMappingURL=load-internal.d.ts.map