package be.simplenotes.domain import be.simplenotes.domain.security.BcryptPasswordHash import be.simplenotes.domain.security.JwtPayloadExtractor import be.simplenotes.domain.security.PasswordHash import be.simplenotes.domain.security.SimpleJwt import be.simplenotes.domain.usecases.NoteService import be.simplenotes.domain.usecases.UserService import be.simplenotes.domain.usecases.export.ExportUseCase import be.simplenotes.domain.usecases.export.ExportUseCaseImpl import be.simplenotes.domain.usecases.markdown.MarkdownConverter import be.simplenotes.domain.usecases.markdown.MarkdownConverterImpl import be.simplenotes.domain.usecases.users.delete.DeleteUseCase import be.simplenotes.domain.usecases.users.delete.DeleteUseCaseImpl import be.simplenotes.domain.usecases.users.login.LoginUseCase import be.simplenotes.domain.usecases.users.login.LoginUseCaseImpl import be.simplenotes.domain.usecases.users.register.RegisterUseCase import be.simplenotes.domain.usecases.users.register.RegisterUseCaseImpl import org.koin.dsl.module val domainModule = module { single { LoginUseCaseImpl(get(), get(), get()) } single { RegisterUseCaseImpl(get(), get()) } single { DeleteUseCaseImpl(get(), get(), get()) } single { UserService(get(), get(), get(), get()) } single { BcryptPasswordHash() } single { SimpleJwt(get()) } single { JwtPayloadExtractor(get()) } single { NoteService(get(), get(), get(), get()).apply { dropAllIndexes() indexAll() } } single { MarkdownConverterImpl() } single { ExportUseCaseImpl(get(), get()) } }