import type { Types } from "mongoose";
import type { IWorkspace } from "../entities/Workspace";
import type { IQueryFilter, IQueryOptions } from "../interfaces";
import type { Ownership } from "../interfaces/SystemTypes";
import BaseService from "./BaseService";
export interface WorkspaceInputData {
    /**
     * Name of the workspace.
     */
    name: string;
    /**
     * User ID of the owner (default is the current authenticated user)
     */
    owner?: string;
    /**
     * Set privacy mode for this workspace
     * @default true
     */
    public?: boolean;
    /**
     * DXUP API Key
     */
    dx_key?: string;
    /**
     * DXUP Workspace ID
     */
    dx_id?: string;
}
export interface InviteMemberData {
    emails: string[];
    role?: string;
}
export interface AddUserToWorkspaceParams {
    userId: Types.ObjectId;
    workspaceId: Types.ObjectId;
    roleId?: Types.ObjectId;
}
export declare class WorkspaceService extends BaseService<IWorkspace> {
    constructor(ownership?: Ownership);
    create(data: WorkspaceInputData, options?: IQueryOptions): Promise<IWorkspace>;
    update(filter: IQueryFilter<IWorkspace>, data: any, options?: IQueryOptions): Promise<IWorkspace[]>;
    delete(filter?: IQueryFilter<IWorkspace>, options?: IQueryOptions): Promise<{
        ok: boolean;
        affected: number;
    }>;
    inviteMember(data: InviteMemberData, options?: IQueryOptions): Promise<IWorkspace>;
    addUser(data: AddUserToWorkspaceParams): Promise<IWorkspace>;
    testCloudStorage(): Promise<{
        path: string;
        storageUrl: string;
        publicUrl: string;
        provider: "google" | "cloudflare" | "aws_s3" | "do_space";
    }>;
}
//# sourceMappingURL=WorkspaceService.d.ts.map