import { Scope, Type } from '@nestjs/common';

type Pattern = string;

interface DynamicProviderOptions {
    pattern: Pattern;
    scope?: Scope;
    exportProviders?: boolean;
    filterPredicate?: (types: Type) => boolean;
}

declare function InjectDynamicProviders(...options: DynamicProviderOptions[]): ClassDecorator;
declare function InjectDynamicProviders(...patterns: Pattern[]): ClassDecorator;
declare function resolveDynamicProviders(startupPath?: string): Promise<void>;

declare function IsObject(instance: any): instance is object;

export { type DynamicProviderOptions, InjectDynamicProviders, IsObject, type Pattern, resolveDynamicProviders };
