import { OptionalPromise } from '../helpers' import { TEmeraltServerConfig } from './server' import { CEmeraltDatabase } from './database' import { CEmeraltPlugin } from './plugin' export type TEmeraltAuthAction = 'publish' | 'get' | 'dropdata' export type BaseUser = { username: string password: string } export interface CEmeraltAuth extends CEmeraltPlugin { putUser(user: User): OptionalPromise hasUser(username: string): OptionalPromise comparePassword(username: string, password: string): OptionalPromise canUser( username: string, action: TEmeraltAuthAction, packagename?: string, ): OptionalPromise } export interface IEmeraltAuth { (pluginConfig: Config): ( serverConfig: TEmeraltServerConfig, database: CEmeraltDatabase, ) => OptionalPromise }