/**
 * Created by tacb0ss on 07/05/2018.
 */
import { Module } from "@nu-art/ts-common";
import { cloudresourcemanager_v1, cloudresourcemanager_v2, serviceusage_v1 } from "googleapis";
import Schema$Folder = cloudresourcemanager_v2.Schema$Folder;
import Schema$Project = cloudresourcemanager_v1.Schema$Project;
import { ServiceKey } from "./consts";
type CreateFolder = {
    parentId: string;
    folderName: string;
};
type QueryFolder = {
    parentId: string;
    folderName: string;
};
type GoogleCloudManagerConfig = {
    authKey: string;
    scopes: string[];
};
export declare class ModuleBE_GcpManager_Class extends Module<GoogleCloudManagerConfig> {
    private cloudServicesManagerAPI;
    private cloudResourcesManagerAPI;
    private cloudResourcesManagerAPIv1;
    constructor();
    protected init(): void;
    getOrCreateFolder(parentFolderId: string, folderName: string): Promise<string>;
    createFolder(_request: CreateFolder): Promise<{
        [key: string]: any;
    } | null | undefined>;
    queryFolders(_query: QueryFolder): Promise<cloudresourcemanager_v2.Schema$Folder[]>;
    getFolderId(folder: Schema$Folder): string;
    private _waitForFolderOperation;
    listProjects(filter?: ((project: Schema$Project) => boolean)): Promise<cloudresourcemanager_v1.Schema$Project[]>;
    getOrCreateProjects(parentId: string, ...projects: {
        projectId: string;
        name: string;
    }[]): Promise<(cloudresourcemanager_v1.Schema$Project | {
        [key: string]: any;
    } | undefined)[]>;
    createProject(parentId: string, projectId: string, name?: string): Promise<{
        [key: string]: any;
    } | null | undefined>;
    _waitForProjectOperation(name: string): Promise<{
        [key: string]: any;
    } | null | undefined>;
    getService(serviceKey: ServiceKey, projectId: string): Promise<serviceusage_v1.Schema$GoogleApiServiceusageV1Service>;
    enableService(serviceKey: ServiceKey, enable: boolean, ...projectIds: string[]): Promise<(void | serviceusage_v1.Schema$GoogleApiServiceusageV1Service)[]>;
    private _enableService;
    private _waitForServiceOperation;
    isEnabled(serviceKey: ServiceKey, projectId: string): Promise<boolean>;
    private _isEnabled;
}
export declare const ModuleBE_GcpManager: ModuleBE_GcpManager_Class;
export {};
