/// <reference types="mongoose/types/aggregate" />
/// <reference types="mongoose/types/callback" />
/// <reference types="mongoose/types/collection" />
/// <reference types="mongoose/types/connection" />
/// <reference types="mongoose/types/cursor" />
/// <reference types="mongoose/types/document" />
/// <reference types="mongoose/types/error" />
/// <reference types="mongoose/types/expressions" />
/// <reference types="mongoose/types/helpers" />
/// <reference types="mongoose/types/middlewares" />
/// <reference types="mongoose/types/indexes" />
/// <reference types="mongoose/types/models" />
/// <reference types="mongoose/types/mongooseoptions" />
/// <reference types="mongoose/types/pipelinestage" />
/// <reference types="mongoose/types/populate" />
/// <reference types="mongoose/types/query" />
/// <reference types="mongoose/types/schemaoptions" />
/// <reference types="mongoose/types/schematypes" />
/// <reference types="mongoose/types/session" />
/// <reference types="mongoose/types/types" />
/// <reference types="mongoose/types/utility" />
/// <reference types="mongoose/types/validation" />
/// <reference types="mongoose/types/virtuals" />
/// <reference types="mongoose/types/inferschematype" />
import { Schema } from "mongoose";
import type { HiddenBodyKeys } from "../interfaces";
import type { RetentionType } from "../interfaces/SystemTypes";
import type { CloudStorageProvider } from "../plugins/cloud-storage";
import type { IBase } from "./Base";
export interface IWorkspace extends IBase {
    /**
     * Workspace name
     */
    name?: string;
    /**
     * Workspace slug: auto-generated by "name" column
     * @readonly
     */
    slug?: string;
    /**
     * Is this a `public` workspace that anyone can join, otherwise it's a `private` workspace that needs approval on joining request.
     */
    public?: boolean;
    /**
     * Workspace profile picture
     */
    image?: string;
    /**
     * Workspace domain name
     */
    domain?: string;
    /**
     * DXSITE API Key
     */
    dx_key?: string;
    /**
     * DXSITE Workspace ID
     */
    dx_id?: string;
    /**
     * Workspace Settings
     */
    settings?: {
        ai?: {
            enabled: boolean;
            apiBaseUrl: string;
            model: string;
            apiKey: string;
        };
        database?: any;
        activity?: {
            /**
             * Data retention information
             * - `type` is "duration", value is "miliseconds"
             * - `type` is "limit", value is "MAX AMOUNT OF BACKUPS"
             */
            retention?: {
                type: RetentionType;
                value: number;
            };
        };
        database_backup?: {
            /**
             * Data retention information
             * - `type` is "duration", value is "miliseconds"
             * - `type` is "limit", value is "MAX AMOUNT OF BACKUPS"
             */
            retention?: {
                type: RetentionType;
                value: number;
            };
        };
        system_log?: {
            /**
             * Data retention information
             * - `type` is "duration", value is "miliseconds"
             * - `type` is "limit", value is "MAX AMOUNT OF BACKUPS"
             */
            retention?: {
                type: RetentionType;
                value: number;
            };
        };
        cloud_storage?: {
            provider: CloudStorageProvider;
            region: string;
            bucket: string;
            accessKey: string;
            secretKey: string;
            endpoint: string;
            baseUrl: string;
            basePath: string;
        };
        notification?: {
            jojo?: {
                enabled: boolean;
                apiKey: string;
                events: string[];
            };
            elasticEmail?: {
                enabled: boolean;
                apiKey: string;
                events: string[];
            };
        };
    };
}
export type WorkspaceDto = Omit<IWorkspace, keyof HiddenBodyKeys>;
export declare const workspaceSchema: Schema<any, import("mongoose").Model<any, any, any, any, any, any>, {}, {}, {}, {}, {
    collection: string;
    timestamps: true;
}, {
    createdAt: NativeDate;
    updatedAt: NativeDate;
} & {
    active: boolean;
    createdAt: Date;
    updatedAt: Date;
    workspace?: import("mongoose").Types.ObjectId;
    workspaceId?: import("mongoose").Types.ObjectId;
    name?: string;
    slug?: string;
    project?: import("mongoose").Types.ObjectId;
    projectId?: import("mongoose").Types.ObjectId;
    domain?: string;
    public?: boolean;
    image?: string;
    dx_key?: string;
    dx_id?: string;
    owner?: import("mongoose").Types.ObjectId;
    settings?: {
        database?: any;
        activity?: {
            retention?: {
                type?: string;
            };
        };
        ai?: {
            model?: string;
            enabled?: boolean;
            apiBaseUrl?: string;
            apiKey?: string;
        };
        database_backup?: {
            retention?: {
                type?: string;
            };
        };
        system_log?: {
            retention?: {
                type?: string;
            };
        };
        cloud_storage?: {
            region?: string;
            provider?: string;
            baseUrl?: string;
            bucket?: string;
            accessKey?: string;
            secretKey?: string;
            endpoint?: string;
            basePath?: string;
        };
        notification?: {
            jojo?: {
                events: string[];
                enabled?: boolean;
                apiKey?: string;
            };
            elasticEmail?: {
                events: string[];
                enabled?: boolean;
                apiKey?: string;
            };
        };
    };
    metadata?: any;
    ownerSlug?: string;
    ownerId?: import("mongoose").Types.ObjectId;
    workspaceSlug?: string;
    updatedBy?: import("mongoose").Types.ObjectId;
    updatedById?: import("mongoose").Types.ObjectId;
    deletedBy?: import("mongoose").Types.ObjectId;
    deletedById?: import("mongoose").Types.ObjectId;
    deletedAt?: Date;
    migratedAt?: Date;
}, import("mongoose").Document<unknown, {}, import("mongoose").FlatRecord<{
    createdAt: NativeDate;
    updatedAt: NativeDate;
} & {
    active: boolean;
    createdAt: Date;
    updatedAt: Date;
    workspace?: import("mongoose").Types.ObjectId;
    workspaceId?: import("mongoose").Types.ObjectId;
    name?: string;
    slug?: string;
    project?: import("mongoose").Types.ObjectId;
    projectId?: import("mongoose").Types.ObjectId;
    domain?: string;
    public?: boolean;
    image?: string;
    dx_key?: string;
    dx_id?: string;
    owner?: import("mongoose").Types.ObjectId;
    settings?: {
        database?: any;
        activity?: {
            retention?: {
                type?: string;
            };
        };
        ai?: {
            model?: string;
            enabled?: boolean;
            apiBaseUrl?: string;
            apiKey?: string;
        };
        database_backup?: {
            retention?: {
                type?: string;
            };
        };
        system_log?: {
            retention?: {
                type?: string;
            };
        };
        cloud_storage?: {
            region?: string;
            provider?: string;
            baseUrl?: string;
            bucket?: string;
            accessKey?: string;
            secretKey?: string;
            endpoint?: string;
            basePath?: string;
        };
        notification?: {
            jojo?: {
                events: string[];
                enabled?: boolean;
                apiKey?: string;
            };
            elasticEmail?: {
                events: string[];
                enabled?: boolean;
                apiKey?: string;
            };
        };
    };
    metadata?: any;
    ownerSlug?: string;
    ownerId?: import("mongoose").Types.ObjectId;
    workspaceSlug?: string;
    updatedBy?: import("mongoose").Types.ObjectId;
    updatedById?: import("mongoose").Types.ObjectId;
    deletedBy?: import("mongoose").Types.ObjectId;
    deletedById?: import("mongoose").Types.ObjectId;
    deletedAt?: Date;
    migratedAt?: Date;
}>> & import("mongoose").FlatRecord<{
    createdAt: NativeDate;
    updatedAt: NativeDate;
} & {
    active: boolean;
    createdAt: Date;
    updatedAt: Date;
    workspace?: import("mongoose").Types.ObjectId;
    workspaceId?: import("mongoose").Types.ObjectId;
    name?: string;
    slug?: string;
    project?: import("mongoose").Types.ObjectId;
    projectId?: import("mongoose").Types.ObjectId;
    domain?: string;
    public?: boolean;
    image?: string;
    dx_key?: string;
    dx_id?: string;
    owner?: import("mongoose").Types.ObjectId;
    settings?: {
        database?: any;
        activity?: {
            retention?: {
                type?: string;
            };
        };
        ai?: {
            model?: string;
            enabled?: boolean;
            apiBaseUrl?: string;
            apiKey?: string;
        };
        database_backup?: {
            retention?: {
                type?: string;
            };
        };
        system_log?: {
            retention?: {
                type?: string;
            };
        };
        cloud_storage?: {
            region?: string;
            provider?: string;
            baseUrl?: string;
            bucket?: string;
            accessKey?: string;
            secretKey?: string;
            endpoint?: string;
            basePath?: string;
        };
        notification?: {
            jojo?: {
                events: string[];
                enabled?: boolean;
                apiKey?: string;
            };
            elasticEmail?: {
                events: string[];
                enabled?: boolean;
                apiKey?: string;
            };
        };
    };
    metadata?: any;
    ownerSlug?: string;
    ownerId?: import("mongoose").Types.ObjectId;
    workspaceSlug?: string;
    updatedBy?: import("mongoose").Types.ObjectId;
    updatedById?: import("mongoose").Types.ObjectId;
    deletedBy?: import("mongoose").Types.ObjectId;
    deletedById?: import("mongoose").Types.ObjectId;
    deletedAt?: Date;
    migratedAt?: Date;
}> & {
    _id: import("mongoose").Types.ObjectId;
}>;
//# sourceMappingURL=Workspace.d.ts.map