import { OAuth2 } from 'alinea/backend/api/OAuth2';
import { Config } from 'alinea/core/Config';
import type { RemoteConnection, RequestContext, Revision } from 'alinea/core/Connection';
import { type Draft, type DraftKey } from 'alinea/core/Draft';
import type { CommitRequest } from 'alinea/core/db/CommitRequest';
import type { EntryRecord } from 'alinea/core/EntryRecord';
import { ReadonlyTree } from 'alinea/core/source/Tree';
export declare class CloudRemote extends OAuth2 implements RemoteConnection {
    #private;
    constructor(context: RequestContext, config: Config);
    getTreeIfDifferent(sha: string): Promise<ReadonlyTree | undefined>;
    getBlobs(shas: Array<string>): AsyncGenerator<[sha: string, blob: Uint8Array]>;
    write(request: CommitRequest): Promise<{
        sha: string;
    }>;
    authenticate(request: Request): Promise<globalThis.Response>;
    prepareUpload(file: string): Promise<{
        method: string | undefined;
        url: string;
        entryId: string;
        location: string;
        previewUrl: string;
        provider: string;
    }>;
    getDraft(draftKey: DraftKey): Promise<Draft | undefined>;
    storeDraft(draft: Draft): Promise<void>;
    revisions(file: string): Promise<Array<Revision>>;
    revisionData(file: string, revisionId: string): Promise<EntryRecord | undefined>;
}
