import { ResultError, ErrorResult, ResultOk } from '../../../../common/custom_type_guard.cjs';
import { ProvideEntity } from '../../../../common/model_factory.cjs';
import { DatabaseLogLevelType } from './database_log_level.cjs';

declare class DatabaseConfigMongoDB {
    password: string;
    username: string;
    host: string;
    protocol?: string | undefined;
    replicaSet?: string | undefined;
    authMethod?: string | undefined;
    directConnection?: boolean | undefined;
    ssl?: boolean | undefined;
    debug?: boolean | undefined;
    constructor(password: string, username: string, host: string, protocol?: string | undefined, replicaSet?: string | undefined, authMethod?: string | undefined, directConnection?: boolean | undefined, ssl?: boolean | undefined, debug?: boolean | undefined);
    static _isValidConfig: (config: DatabaseConfig) => boolean;
    static _isValidConfigUnwrap: (config: DatabaseConfig) => ResultError<ErrorResult> | ResultOk<DatabaseConfig & {
        driver_config: DatabaseConfigMongoDB;
    }>;
}
declare class DatabaseConfigLokiDB {
    options: Record<any, any>;
    constructor(options: Record<any, any>);
    static _isValidConfig: (config: DatabaseConfig) => boolean;
}
declare class DatabaseConfig {
    id: string;
    env: string;
    type: `mongodb` | `lokidb`;
    database_name: string;
    log_level: DatabaseLogLevelType;
    driver_config?: DatabaseConfigMongoDB | DatabaseConfigLokiDB | undefined;
    constructor(id: string, env: string, type: `mongodb` | `lokidb`, database_name: string, log_level: DatabaseLogLevelType, driver_config?: DatabaseConfigMongoDB | DatabaseConfigLokiDB | undefined);
    static isMongoDBConfig: (config: DatabaseConfig) => config is DatabaseConfig & {
        driver_config: DatabaseConfigMongoDB;
    };
    static isMongoDBConfigUnwrap: (config: DatabaseConfig) => DatabaseConfig & {
        driver_config: DatabaseConfigMongoDB;
    };
    static create: (input: ProvideEntity<DatabaseConfig, "log_level">, options?: {
        defaultValue: boolean;
        excludeExtraProp: boolean;
    } | undefined, customMapperOverride?: ((input: ProvideEntity<DatabaseConfig, "log_level">) => never) | undefined) => DatabaseConfig;
}

export { DatabaseConfig, DatabaseConfigLokiDB, DatabaseConfigMongoDB };
