import { Config } from 'alinea/core/Config';
import type { Source } from '../source/Source.js';
import type { ReadonlyTree } from '../source/Tree.js';
import { type CommitChange } from './CommitRequest.js';
import type { EntryIndex } from './EntryIndex.js';
import type { ArchiveMutation, CreateMutation, MoveMutation, Mutation, PublishMutation, RemoveFileMutation, RemoveMutation, UnpublishMutation, UpdateMutation, UploadFileMutation } from './Mutation.js';
type Op<T> = Omit<T, 'op'>;
export declare class EntryTransaction {
    #private;
    constructor(config: Config, index: EntryIndex, source: Source, from: ReadonlyTree);
    get empty(): boolean;
    create({ locale, type, data, root, workspace, fromSeed, parentId, id, insertOrder, status, overwrite }: Op<CreateMutation>): this;
    update({ id, locale, status, set }: Op<UpdateMutation>): this;
    publish({ id, locale, status }: Op<PublishMutation>): this;
    unpublish({ id, locale }: Op<UnpublishMutation>): this;
    archive({ id, locale }: Op<ArchiveMutation>): this;
    move({ id, after, toParent, toRoot }: Op<MoveMutation>): this;
    remove({ id, locale, status }: Op<RemoveMutation>): this;
    removeFile(mutation: Op<RemoveFileMutation>): this;
    uploadFile(mutation: Op<UploadFileMutation>): this;
    description(): string;
    apply(mutations: Array<Mutation>): void;
    toRequest(): Promise<{
        fromSha: string;
        intoSha: string;
        description: string;
        checks: [path: string, sha: string][];
        changes: CommitChange[];
    }>;
}
export {};
