import type { CloudDatabaseDto, ICloudDatabase } from "../entities/CloudDatabase";
import type { ICloudDatabaseBackup } from "../entities/CloudDatabaseBackup";
import type { CronjobRepeat, CronjonRepeatCondition } from "../entities/Cronjob";
import type { IQueryFilter, IQueryOptions, IQueryPagination } from "../interfaces";
import type { CloudDatabaseType, Ownership } from "../interfaces/SystemTypes";
import BaseService from "./BaseService";
export type DatabaseConnectionInfo = {
    type: CloudDatabaseType;
    host: string;
    port?: string;
    /**
     * @default root
     */
    user?: string;
    pass: string;
};
export type DatabaseBackupParams = DatabaseConnectionInfo & {
    /**
     * @default all-databases
     */
    dbName?: string;
    /**
     * For MongoDB only
     * @default admin
     */
    authDb?: string;
    /**
     * Output directory
     */
    outDir?: string;
};
export type DatabaseRestoreParams = {
    /**
     * @default all-databases
     */
    dbName?: string;
    /**
     * For MongoDB only
     * @default admin
     */
    authDb?: string;
    /**
     * Backup path
     */
    path?: string;
};
export declare class CloudDatabaseService extends BaseService<ICloudDatabase> {
    constructor(ownership?: Ownership);
    create(data: CloudDatabaseDto): Promise<ICloudDatabase>;
    find(filter?: IQueryFilter<ICloudDatabase>, options?: IQueryOptions & IQueryPagination, pagination?: IQueryPagination): Promise<ICloudDatabase[]>;
    update(filter: IQueryFilter<ICloudDatabase>, data: any, options?: IQueryOptions): Promise<ICloudDatabase[]>;
    updateOne(filter: IQueryFilter<ICloudDatabase>, data: any, options?: IQueryOptions): Promise<ICloudDatabase>;
    delete(filter?: IQueryFilter<ICloudDatabase>, options?: IQueryOptions): Promise<{
        ok: boolean;
        affected: number;
    }>;
    softDelete(filter?: IQueryFilter<ICloudDatabase>, options?: IQueryOptions): Promise<{
        ok: boolean;
        affected: number;
    }>;
    checkHealthById(id: string): Promise<boolean>;
    checkHealth(db: ICloudDatabase): Promise<boolean>;
    backupById(id: string): Promise<ICloudDatabaseBackup>;
    backup(db: ICloudDatabase, options?: {
        dbName?: string;
        authDb?: string;
    }): Promise<ICloudDatabaseBackup>;
    restoreFromBackupId(backupId: string, dbId: string): Promise<import("../interfaces").ResponseData | {
        name: string;
        path: string;
    }>;
    restoreFromBackup(backup: ICloudDatabaseBackup, db: ICloudDatabase): Promise<import("../interfaces").ResponseData | {
        name: string;
        path: string;
    }>;
    restoreById(options: DatabaseRestoreParams, id: string): Promise<import("../interfaces").ResponseData | {
        name: string;
        path: string;
    }>;
    restore(options: DatabaseRestoreParams, toDatabase: ICloudDatabase): Promise<import("../interfaces").ResponseData | {
        name: string;
        path: string;
    }>;
    scheduleAutoBackup(id: string, repeat: CronjobRepeat, condition?: CronjonRepeatCondition, ownership?: {
        owner: string;
        workspace: string;
    }): Promise<ICloudDatabase>;
}
//# sourceMappingURL=CloudDatabaseService.d.ts.map