/// <reference types="node" />
import { Adapter } from 'fs-adapters';
import { MiddlewareManager } from './middleware/manager.js';
import { TransformResult } from './middleware/transformable.js';
import { Readable, Writable } from 'node:stream';
/**
 * Helper class for I/O operations.
 */
export declare class IOManager {
    private readonly _adapter;
    private readonly _middlewareManager;
    /**
     * Construct a new IOManager.
     *
     * @param adapter The IO adapter.
     * @param middlewareManager The middleware manager.
     */
    constructor(adapter: Adapter, middlewareManager: MiddlewareManager);
    /**
     * Create a read stream for the item with the given id. Since this step may
     * modify item metadata, the result is an object with the following properties:
     * 'stream' (the readable stream), 'metadata' (the new metadata), and
     * 'metadataChanged' (a boolean indicating whether the metadata was modified).
     *
     * @param id The item id.
     * @param meta The item metadata.
     * @param options Middleware options.
     * @returns A Promise resolving to a result object.
     */
    createReadStream(id: string, meta: object, options?: object): Promise<TransformResult<Readable>>;
    /**
     * Create a write stream for the item with the given id. Since this step may
     * modify item metadata, the result is an object with the following properties:
     * 'stream' (the writable stream), 'metadata' (the new metadata), and
     * 'metadataChanged' (a boolean indicating whether the metadata was modified).
     *
     * @param id The item id.
     * @param meta The item metadata.
     * @param options Middleware options.
     * @returns A Promise resolving to a result object.
     */
    createWriteStream(id: string, meta: object, options?: object): Promise<TransformResult<Writable>>;
    /**
     * Create a temporary write stream to an item that can be published later.
     *
     * @param id The item id.
     * @param options Middleware options.
     * @returns A Promise that resolves to a Writable Stream.
     */
    createTemporary(id: string, options?: object): Promise<Writable>;
    /**
     * Mark the item with the given id as non-temporary as part of the commit
     * process.
     *
     * @param id The item id.
     * @returns A Promise that resolves when done.
     */
    publish(id: string): Promise<void>;
    /**
     * Delete all data for the item with the given id.
     *
     * @param id The item id.
     * @returns A Promise that resolves when done.
     */
    delete(id: string): Promise<void>;
    /**
     * Delete the temporary item with the given id.
     *
     * @param id The item id.
     * @returns A Promise that resolves when done.
     */
    deleteTemporary(id: string): Promise<void>;
    /**
     * Read the metadata object for the item with the given id.
     *
     * @param id The item's id.
     * @returns A Promise that resolves to the metadata.
     */
    readMetadata(id: string): Promise<object>;
    /**
     * Write a metadata object for the item with the given id.
     *
     * @param id The item's id.
     * @param metadata The metadata to write.
     * @returns A Promise that resolves when done.
     */
    writeMetadata(id: string, metadata: object): Promise<void>;
}
