/**
 * Local filesystem asset backend
 *
 * Stores assets in .studiograph/assets/ directory
 */
import type { AssetBackend, AssetInfo, AssetRecord } from './base.js';
export declare class LocalAssetBackend implements AssetBackend {
    private basePath;
    constructor(basePath: string);
    /**
     * Ensure base directory exists
     */
    private ensureBaseDirectory;
    /**
     * Get full file path for a key
     */
    private getFilePath;
    /**
     * Upload asset to local filesystem
     */
    upload(key: string, buffer: Buffer, contentType: string): Promise<AssetInfo>;
    /**
     * List assets with a given prefix
     */
    list(prefix: string): Promise<AssetInfo[]>;
    /**
     * List every asset under basePath in a single filesystem walk. Parses
     * the `{type}/{id}/{filename}` layout without any markdown or metadata
     * reads. Used by the asset manager endpoint.
     */
    listAll(): Promise<AssetRecord[]>;
    /**
     * Server-side copy (filesystem copy). Creates the destination directory
     * and overwrites an existing destination so migration re-runs are idempotent.
     */
    /**
     * Read an object's bytes from the local filesystem.
     */
    download(key: string): Promise<Buffer>;
    copy(srcKey: string, destKey: string): Promise<void>;
    /**
     * Delete a single asset
     */
    delete(key: string): Promise<void>;
    /**
     * Delete all assets with a given prefix
     */
    deleteAll(prefix: string): Promise<number>;
    /**
     * Check if an asset exists
     */
    exists(key: string): Promise<boolean>;
    /**
     * Guess content type from file extension
     */
    private guessContentType;
}
