import { DynamicModule, InjectionToken, MiddlewareConsumer, ModuleMetadata, NestModule, OptionalFactoryDependency } from '@nestjs/common';
import { AuthRepository, PasswordHasherService } from './domain';
import { IAuthDefinitionsModuleOptions } from './infrastructure';
export interface IAuthModuleOptions extends Pick<ModuleMetadata, 'imports' | 'providers'> {
    definitions: IAuthDefinitionsModuleOptions;
    authRepository: {
        useFactory: (...args: any[]) => Promise<AuthRepository> | AuthRepository;
        inject?: Array<InjectionToken | OptionalFactoryDependency>;
    };
    passwordHasher?: {
        useFactory: (...args: any[]) => Promise<PasswordHasherService> | PasswordHasherService;
        inject?: Array<InjectionToken | OptionalFactoryDependency>;
    };
}
export declare class AuthModule implements NestModule {
    static forRootAsync(options: IAuthModuleOptions): DynamicModule;
    configure(consumer: MiddlewareConsumer): void;
}
