import type { Config } from '../Config.js';
import type { SyncApi, UploadResponse } from '../Connection.js';
import type { AnyQueryResult, GraphQuery } from '../Graph.js';
import type { ChangesBatch } from '../source/Change.js';
import type { Source } from '../source/Source.js';
import { type CommitRequest } from './CommitRequest.js';
import { EntryIndex } from './EntryIndex.js';
import type { Mutation } from './Mutation.js';
import { WriteableGraph } from './WriteableGraph.js';
export declare class LocalDB extends WriteableGraph {
    #private;
    config: Config;
    index: EntryIndex;
    source: Source;
    constructor(config: Config, source?: Source);
    resolve<Query extends GraphQuery>(query: Query): Promise<AnyQueryResult<Query>>;
    get sha(): string;
    indexChanges(batch: ChangesBatch): Promise<string>;
    applyChanges(batch: ChangesBatch): Promise<void>;
    getTreeIfDifferent(sha: string): Promise<import("../source/Tree.js").ReadonlyTree | undefined>;
    getBlobs(shas: Array<string>): AsyncGenerator<[sha: string, blob: Uint8Array], any, any>;
    sync(): Promise<string>;
    syncWith(remote: SyncApi): Promise<string>;
    logEntries(): Promise<void>;
    request(mutations: Array<Mutation>): Promise<{
        fromSha: string;
        intoSha: string;
        description: string;
        checks: [path: string, sha: string][];
        changes: import("./CommitRequest.js").CommitChange[];
    }>;
    mutate(mutations: Array<Mutation>): Promise<{
        sha: string;
    }>;
    write(request: CommitRequest): Promise<{
        sha: string;
    }>;
    prepareUpload(file: string): Promise<UploadResponse>;
}
