import { BaseDB_ApiGenerator } from "@intuitionrobotics/db-api-generator/backend";
import { DB_PermissionAccessLevel, DB_PermissionApi, DB_PermissionDomain, DB_PermissionProject, Request_CreateGroup } from "../_imports";
import { TypeValidator } from "@intuitionrobotics/ts-common";
import { FirestoreTransaction } from "@intuitionrobotics/firebase/backend";
import { Clause_Where } from "@intuitionrobotics/firebase";
import { ExpressRequest, ServerApi } from "@intuitionrobotics/thunderstorm/backend";
export declare const validateProjectName: import("@intuitionrobotics/ts-common").Validator<string>;
export declare const validateStringWithDashesAndSlash: import("@intuitionrobotics/ts-common").Validator<string>;
export declare class ProjectDB_Class extends BaseDB_ApiGenerator<DB_PermissionProject> {
    static _validator: TypeValidator<DB_PermissionProject>;
    constructor();
    protected preUpsertProcessing(transaction: FirestoreTransaction, dbInstance: DB_PermissionProject, request?: ExpressRequest): Promise<void>;
    apis(pathPart?: string): ServerApi<any>[];
}
export declare class DomainDB_Class extends BaseDB_ApiGenerator<DB_PermissionDomain> {
    static _validator: TypeValidator<DB_PermissionDomain>;
    constructor();
    protected assertDeletion(transaction: FirestoreTransaction, dbInstance: DB_PermissionDomain): Promise<void>;
    protected preUpsertProcessing(transaction: FirestoreTransaction, dbInstance: DB_PermissionDomain, request?: ExpressRequest): Promise<void>;
}
export declare class LevelDB_Class extends BaseDB_ApiGenerator<DB_PermissionAccessLevel> {
    static _validator: TypeValidator<DB_PermissionAccessLevel>;
    constructor();
    protected internalFilter(item: DB_PermissionAccessLevel): Clause_Where<DB_PermissionAccessLevel>[];
    protected preUpsertProcessing(transaction: FirestoreTransaction, dbInstance: DB_PermissionAccessLevel, request?: ExpressRequest): Promise<void>;
    protected upsertImpl_Read(transaction: FirestoreTransaction, dbInstance: DB_PermissionAccessLevel, request: ExpressRequest): Promise<() => DB_PermissionAccessLevel>;
    protected assertDeletion(transaction: FirestoreTransaction, dbInstance: DB_PermissionAccessLevel): Promise<void>;
    setUpdatedLevel(dbLevel: DB_PermissionAccessLevel, units: Request_CreateGroup[]): void;
}
export declare class ApiDB_Class extends BaseDB_ApiGenerator<DB_PermissionApi> {
    static _validator: TypeValidator<DB_PermissionApi>;
    constructor();
    protected externalFilter(item: DB_PermissionApi): Clause_Where<DB_PermissionApi>;
    protected internalFilter(item: DB_PermissionApi): Clause_Where<DB_PermissionApi>[];
    protected preUpsertProcessing(transaction: FirestoreTransaction, dbInstance: DB_PermissionApi, request?: ExpressRequest): Promise<void>;
    registerApis(projectId: string, routes: string[]): Promise<DB_PermissionApi[]>;
    apis(pathPart?: string): ServerApi<any>[];
}
export declare const ProjectPermissionsDB: ProjectDB_Class;
export declare const DomainPermissionsDB: DomainDB_Class;
export declare const AccessLevelPermissionsDB: LevelDB_Class;
export declare const ApiPermissionsDB: ApiDB_Class;
