import { type FileSystemStats } from '@rushstack/node-core-library';
import type { IExtractorOptions } from './PackageExtractor';
import type { SymlinkAnalyzer } from './SymlinkAnalyzer';
export interface IIncludeAssetOptions {
    sourceFilePath?: string;
    sourceFileStats?: FileSystemStats;
    sourceFileContent?: string | Buffer;
    targetFilePath: string;
    ignoreIfExisting?: boolean;
}
export interface IIncludeAssetPathOptions extends IIncludeAssetOptions {
    sourceFilePath: string;
    sourceFileContent?: never;
}
export interface IIncludeExistingAssetPathOptions extends IIncludeAssetOptions {
    sourceFilePath?: never;
    sourceFileContent?: never;
}
export interface IIncludeAssetContentOptions extends IIncludeAssetOptions {
    sourceFileContent: string | Buffer;
    sourceFilePath?: never;
    sourceFileStats?: never;
}
export interface IAssetHandlerOptions extends IExtractorOptions {
    symlinkAnalyzer: SymlinkAnalyzer;
}
export interface IFinalizeOptions {
    onAfterExtractSymlinksAsync: () => Promise<void>;
}
export declare class AssetHandler {
    private readonly _terminal;
    private readonly _sourceRootFolder;
    private readonly _targetRootFolder;
    private readonly _createArchiveOnly;
    private readonly _symlinkAnalyzer;
    private readonly _archiveManager;
    private readonly _archiveFilePath;
    private readonly _linkCreationMode;
    private readonly _includedAssetPaths;
    private _isFinalized;
    constructor(options: IAssetHandlerOptions);
    includeAssetAsync(options: IIncludeAssetPathOptions): Promise<void>;
    includeAssetAsync(options: IIncludeExistingAssetPathOptions): Promise<void>;
    includeAssetAsync(options: IIncludeAssetContentOptions): Promise<void>;
    get assetPaths(): string[];
    finalizeAsync(options?: IFinalizeOptions): Promise<void>;
    /**
     * Create a symlink as described by the ILinkInfo object.
     */
    private _extractSymlinkAsync;
}
//# sourceMappingURL=AssetHandler.d.ts.map