import { DynamicModule, INestApplication, InjectionToken, Provider, Type } from '@nestjs/common';
import { ConfigModelOptions } from '../config-model/types';
import { EnvModelOptions } from '../env-model/types';
import { defaultContextName } from '../utils/default-context-name';
import { DEFAULT_FOR_FEATURE_ASYNC_METHOD_NAME, DEFAULT_FOR_FEATURE_METHOD_NAME, DEFAULT_FOR_ROOT_ASYNC_METHOD_NAME, DEFAULT_FOR_ROOT_METHOD_NAME, DynamicNestModuleMetadata, ExportsWithStaticOptionsResponse, ForFeatureAsyncMethodOptions, ForFeatureMethodOptions, ForRootAsyncMethodOptions, ForRootMethodOptions, ImportsWithStaticOptionsResponse, NestModuleCategory, NestModuleMetadata, ProjectOptions } from './types';
export declare function getWrapModuleMetadataMethods(): ("wrapApplication" | "preWrapApplication" | "postWrapApplication")[];
export declare function getNestModuleInternalUtils({ moduleName }: {
    moduleName: string;
}): {
    defaultContextName: typeof defaultContextName;
    createUniqProvider: () => {
        provide: string;
        useValue: `${string}-${string}-${string}-${string}-${string}`;
    };
    getEnvironmentsLoaderToken: (contextName?: string) => InjectionToken;
    getStaticEnvironmentsLoaderToken: (contextName?: string) => InjectionToken;
    getStaticConfigurationLoaderToken: (contextName?: string) => InjectionToken;
    getConfigurationLoaderToken: (contextName?: string) => InjectionToken;
    getServiceToken: (targetName: any, contextName?: string) => string;
    getFeatureConfigurationsToken: (contextName?: string) => InjectionToken;
    getAsyncConfigurationToken: (contextName?: string) => string;
    getAllFeatureConfigurationsToken: () => InjectionToken;
    getFeatureEnvironmentsToken: (contextName?: string) => InjectionToken;
    getAllFeatureEnvironmentsToken: () => InjectionToken;
    getModuleSettingsToken: (contextName?: string) => string;
    getAllModuleSettingsToken: () => string;
};
export declare function getNestModuleDecorators({ moduleName }: {
    moduleName: string;
}): {
    InjectFeatures: (contextName?: string) => any;
    InjectService: (service: any, contextName?: any) => any;
    InjectAllFeatures: () => any;
    InjectFeatureEnvironments: (contextName?: string) => any;
    InjectAllFeatureEnvironments: () => any;
    InjectModuleSettings: (contextName?: string) => any;
    InjectAllModuleSettings: () => any;
};
export declare function createNestModule<TStaticConfigurationModel = never, TConfigurationModel = never, TEnvironmentsModel = never, TStaticEnvironmentsModel = never, TFeatureConfigurationModel = never, TFeatureEnvironmentsModel = never, TForRootMethodName extends string = typeof DEFAULT_FOR_ROOT_METHOD_NAME, TForRootAsyncMethodName extends string = typeof DEFAULT_FOR_ROOT_ASYNC_METHOD_NAME, TForFeatureMethodName extends string = typeof DEFAULT_FOR_FEATURE_METHOD_NAME, TForFeatureAsyncMethodName extends string = typeof DEFAULT_FOR_FEATURE_ASYNC_METHOD_NAME, TDynamicModule = DynamicModule, TLinkOptions = {
    project: ProjectOptions;
    contextName?: string;
    featureModule: TDynamicModule;
    settingsModule: TDynamicModule;
    featureConfiguration: TFeatureConfigurationModel;
    featureEnvironments: TFeatureEnvironmentsModel;
    staticConfiguration: TStaticConfigurationModel;
    staticEnvironments: TStaticEnvironmentsModel;
    globalEnvironmentsOptions: Omit<EnvModelOptions, 'originalName'>;
    globalConfigurationOptions: Omit<ConfigModelOptions, 'originalName'>;
}, TImportsWithStaticOptions = (linkOptions: TLinkOptions) => Array<ImportsWithStaticOptionsResponse>, TControllersWithStaticOptions = (linkOptions: TLinkOptions) => Type<any>[], TProvidersWithStaticOptions = (linkOptions: TLinkOptions) => Provider[], TSharedProvidersWithStaticOptions = (linkOptions: TLinkOptions) => Provider[], TExportsWithStaticOptions = (linkOptions: TLinkOptions) => ExportsWithStaticOptionsResponse[], TNestApplication = INestApplication, TModuleName extends string = string>(nestModuleMetadata: NestModuleMetadata<TConfigurationModel, TStaticConfigurationModel, TEnvironmentsModel, TStaticEnvironmentsModel, TFeatureConfigurationModel, TFeatureEnvironmentsModel, TForRootMethodName, TForRootAsyncMethodName, TForFeatureMethodName, TForFeatureAsyncMethodName, TDynamicModule, TLinkOptions, TImportsWithStaticOptions, TControllersWithStaticOptions, TProvidersWithStaticOptions, TSharedProvidersWithStaticOptions, TExportsWithStaticOptions, TNestApplication, TModuleName>): Record<TModuleName, Record<`${TForFeatureAsyncMethodName}`, (asyncOptions?: ForFeatureAsyncMethodOptions<TConfigurationModel, TStaticConfigurationModel, TEnvironmentsModel, TStaticEnvironmentsModel, TFeatureConfigurationModel, TFeatureEnvironmentsModel>) => Promise<TDynamicModule>> & Record<`${TForFeatureMethodName}`, (options?: ForFeatureMethodOptions<TFeatureConfigurationModel, TFeatureEnvironmentsModel>) => Promise<TDynamicModule>> & Record<`${TForRootMethodName}`, (options?: ForRootMethodOptions<TStaticConfigurationModel, TConfigurationModel, TEnvironmentsModel, TStaticEnvironmentsModel>) => Promise<TDynamicModule>> & Record<`${TForRootAsyncMethodName}`, (asyncOptions?: ForRootAsyncMethodOptions<TStaticConfigurationModel, TConfigurationModel, TEnvironmentsModel, TStaticEnvironmentsModel>) => Promise<TDynamicModule>>>;
export declare function collectRootNestModules(modules: Partial<Record<NestModuleCategory, DynamicNestModuleMetadata[]>>): DynamicNestModuleMetadata[];
