import { AssignAppPermissions, DB_PermissionsGroup, DB_PermissionsUser, PredefinedGroup } from "../_imports";
import { BaseDB_ApiGenerator } from "@intuitionrobotics/db-api-generator/backend";
import { OnNewUserRegistered, OnUserLogin } from "@intuitionrobotics/user-account/backend";
import { Clause_Where } from "@intuitionrobotics/firebase";
import { ExpressRequest } from "@intuitionrobotics/thunderstorm/backend";
import { TypeValidator } from "@intuitionrobotics/ts-common";
import { FirestoreTransaction } from "@intuitionrobotics/firebase/backend";
import { UI_Account } from "@intuitionrobotics/user-account";
export declare class GroupsDB_Class extends BaseDB_ApiGenerator<DB_PermissionsGroup> {
    static _validator: TypeValidator<DB_PermissionsGroup>;
    constructor();
    protected externalFilter(item: DB_PermissionsGroup): Clause_Where<DB_PermissionsGroup>;
    protected internalFilter(item: DB_PermissionsGroup): Clause_Where<DB_PermissionsGroup>[];
    protected assertDeletion(transaction: FirestoreTransaction, dbInstance: DB_PermissionsGroup): Promise<void>;
    private setAccessLevels;
    getGroupsByTags(tags: string[]): Promise<DB_PermissionsGroup[]>;
    deleteTags(tag: string): Promise<void>;
    protected preUpsertProcessing(transaction: FirestoreTransaction, dbInstance: DB_PermissionsGroup, request?: ExpressRequest): Promise<void>;
    getConfig(): import("@intuitionrobotics/db-api-generator/backend").Config<DB_PermissionsGroup>;
    getPredefinedGroupId(projectId: string, predefinedGroupId: string): string;
    upsertPredefinedGroups(projectId: string, projectName: string, predefinedGroups: PredefinedGroup[]): Promise<DB_PermissionsGroup[]>;
}
export declare class UsersDB_Class extends BaseDB_ApiGenerator<DB_PermissionsUser> implements OnNewUserRegistered, OnUserLogin {
    static _validator: TypeValidator<DB_PermissionsUser>;
    constructor();
    protected preUpsertProcessing(transaction: FirestoreTransaction, dbInstance: DB_PermissionsUser, request?: ExpressRequest): Promise<void>;
    protected internalFilter(item: DB_PermissionsUser): Clause_Where<DB_PermissionsUser>[];
    private setGroupIds;
    __onUserLogin(account: UI_Account): Promise<void>;
    __onNewUserRegistered(account: UI_Account): Promise<void>;
    insertIfNotExist(email: string): Promise<DB_PermissionsUser | undefined>;
    assignAppPermissions(assignAppPermissionsObj: AssignAppPermissions, request?: ExpressRequest): Promise<void>;
    patch(instance: DB_PermissionsUser, propsToPatch?: (keyof DB_PermissionsUser)[], request?: ExpressRequest): Promise<DB_PermissionsUser>;
}
export declare const GroupPermissionsDB: GroupsDB_Class;
export declare const UserPermissionsDB: UsersDB_Class;
