import { HttpClient } from '@angular/common/http';
import { Observable } from 'rxjs';
import type { DropboxCredentials, DropboxSyncClient, SyncOptions, SyncResult, TokenResponse } from '../core/types';
export declare class DropboxSyncService {
    private http;
    private client;
    constructor(http: HttpClient);
    /**
     * Initialize the Dropbox sync client with credentials
     */
    initialize(credentials: DropboxCredentials): DropboxSyncClient;
    /**
     * Get the current Dropbox sync client instance, or initialize with credentials if not exists
     */
    getClient(credentials?: DropboxCredentials): DropboxSyncClient;
    /**
     * Check the connection status with Dropbox
     */
    checkConnection(): Observable<boolean>;
    /**
     * Start the OAuth flow to connect to Dropbox
     */
    connectDropbox(): void;
    /**
     * Disconnect from Dropbox
     */
    disconnectDropbox(): Observable<boolean>;
    /**
     * Start the sync process
     */
    startSync(options?: Partial<SyncOptions>): Observable<SyncResult>;
    /**
     * Cancel an ongoing sync process
     */
    cancelSync(): void;
    /**
     * Set up socket listeners for sync events
     * Returns an RxJS Observable that emits sync progress events
     */
    setupSocketListeners(): Observable<any>;
    /**
     * Handle OAuth callback on the client side
     */
    handleOAuthCallback(code: string): Observable<TokenResponse>;
    /**
     * Create a sync queue to determine which files need to be uploaded/downloaded
     */
    createSyncQueue(options?: Partial<SyncOptions>): Observable<{
        uploadQueue: string[];
        downloadQueue: string[];
    }>;
}
/**
 * Function to extract credentials from Angular environment
 */
export declare function getCredentialsFromEnvironment(environment: any): DropboxCredentials;
