import { Writable } from 'stream';
import type { Core } from '@strapi/types';
import type { Transaction } from '../../../types/utils';
export interface CreateAssetsDestinationWritableOptions {
    strapi: Core.Strapi;
    transaction: Transaction;
    resolveUploadFileId: (metadata: {
        id: number;
    }) => number | undefined;
    restoreMediaEntitiesContent: boolean;
    removeAssetsBackup: () => Promise<void>;
}
/**
 * Writable for restoring upload assets during a local push destination transfer.
 *
 * Design constraints:
 * 1. The `write()` callback must return **before** `uploadStream` finishes so the remote push
 *    handler can continue feeding chunks to the PassThrough stream in the same WebSocket batch
 *    (avoids deadlock — see `streamAsset` in the remote push handler).
 * 2. `uploadStream` is only called **after** the PassThrough has been fully drained (all chunks
 *    received and the stream ended). This gives the upload provider a pre-filled synchronous
 *    Readable rather than a lazy async wrapper, which avoids `Buffer.from(undefined)` crashes
 *    in upload providers that call `stream.read()` before any data has been buffered.
 */
export declare function createAssetsDestinationWritable(options: CreateAssetsDestinationWritableOptions): Writable;
//# sourceMappingURL=assets-destination-writable.d.ts.map