import { Client, Databases, Storage, type Models } from "node-appwrite"; import { type AppwriteConfig, type AppwriteFunction, type Specification } from "appwrite-utils"; import { type AfterImportActions, type ConverterFunctions, type ValidationRules } from "appwrite-utils"; import { type TransferOptions } from "./migrations/transfer.js"; import type { DatabaseAdapter } from 'appwrite-utils-helpers'; import { type ValidationResult } from "appwrite-utils-helpers"; import type { DatabaseSelection, BucketSelection } from "./shared/selectionDialogs.js"; export interface SetupOptions { databases?: Models.Database[]; collections?: string[]; doBackup?: boolean; wipeDatabase?: boolean; wipeCollections?: boolean; wipeDocumentStorage?: boolean; wipeUsers?: boolean; transferUsers?: boolean; generateSchemas?: boolean; schemaFormat?: string; schemaOutDir?: string; importData?: boolean; checkDuplicates?: boolean; shouldWriteFile?: boolean; } export interface ControllerInitOptions { validate?: boolean; strictMode?: boolean; useSession?: boolean; sessionCookie?: string; preferJson?: boolean; overrides?: { appwriteEndpoint?: string; appwriteProject?: string; appwriteKey?: string; }; } export declare class UtilsController { private static instance; private isInitialized; /** * Get the UtilsController singleton instance */ static getInstance(currentUserDir: string, directConfig?: { appwriteEndpoint?: string; appwriteProject?: string; appwriteKey?: string; }): UtilsController; /** * Clear the singleton instance (useful for testing) */ static clearInstance(): void; private appwriteFolderPath?; private appwriteConfigPath?; private currentUserDir; config?: AppwriteConfig; appwriteServer?: Client; database?: Databases; storage?: Storage; adapter?: DatabaseAdapter; converterDefinitions: ConverterFunctions; validityRuleDefinitions: ValidationRules; afterImportActionsDefinitions: AfterImportActions; constructor(currentUserDir: string, directConfig?: { appwriteEndpoint?: string; appwriteProject?: string; appwriteKey?: string; }); init(options?: ControllerInitOptions): Promise; reloadConfig(): Promise; ensureDatabaseConfigBucketsExist(databases?: Models.Database[]): Promise; pushGlobalBuckets(selectedBucketIds?: string[]): Promise; ensureDatabasesExist(databases?: Models.Database[]): Promise; ensureCollectionsExist(database: Models.Database, collections?: Models.Collection[]): Promise; getDatabasesByIds(ids: string[]): Promise; fetchAllBuckets(): Promise<{ buckets: Models.Bucket[]; }>; wipeOtherDatabases(databasesToKeep: Models.Database[]): Promise; wipeUsers(): Promise; backupDatabase(database: Models.Database, format?: 'json' | 'zip'): Promise; listAllFunctions(): Promise; findFunctionDirectories(): Promise>; deployFunction(functionName: string, functionPath?: string, functionConfig?: AppwriteFunction): Promise; syncFunctions(): Promise; wipeDatabase(database: Models.Database, wipeBucket?: boolean): Promise; wipeBucketFromDatabase(database: Models.Database): Promise; wipeCollection(database: Models.Database, collection: Models.Collection): Promise; wipeDocumentStorage(bucketId: string): Promise; createOrUpdateCollectionsForDatabases(databases: Models.Database[], collections?: Models.Collection[]): Promise; createOrUpdateCollections(database: Models.Database, deletedCollections?: { collectionId: string; collectionName: string; }[], collections?: Models.Collection[]): Promise; generateSchemas(options?: { schemaFormat?: string; schemaOutDir?: string; }): Promise; importData(options?: SetupOptions): Promise; synchronizeConfigurations(databases?: Models.Database[], config?: AppwriteConfig, databaseSelections?: DatabaseSelection[], bucketSelections?: BucketSelection[]): Promise; selectivePull(databaseSelections: DatabaseSelection[], bucketSelections: BucketSelection[]): Promise; selectivePush(databaseSelections: DatabaseSelection[], bucketSelections: BucketSelection[]): Promise; syncDb(databases?: Models.Database[], collections?: Models.Collection[]): Promise; getAppwriteFolderPath(): string | undefined; transferData(options: TransferOptions): Promise; updateFunctionSpecifications(functionId: string, buildSpecification: Specification, runtimeSpecification: Specification): Promise; /** * Validates the current configuration for collections/tables conflicts */ validateConfiguration(strictMode?: boolean): Promise; /** * Get current session information for debugging/logging purposes * Delegates to ConfigManager for session info */ getSessionInfo(): Promise<{ hasSession: boolean; authMethod?: string; email?: string; expiresAt?: string; }>; }