/**
 * Typed Error classes for the MCP pre-signed asset upload flow.
 *
 * The presign and finalize services throw these; `errorToMcpResult()` in
 * `mcp/tools.ts` maps each to a `fail()` envelope with a `code` discriminator
 * the agent can branch on. Generic `Error` thrown from the same call sites
 * fall through to the default "unknown" code. See ~/.claude/plans/
 * mcp-presigned-asset-upload.md decision R4.
 *
 * The `code` field is read by clients; the message is human-facing. Keep
 * codes stable across releases — agent prompts and downstream MCP-host UIs
 * key off them.
 */
export declare class AssetUploadError extends Error {
    /** Stable machine-readable identifier. Set by each subclass; the base
     *  class declares it so a generic catch can read `err.code` without a
     *  narrowing dance. */
    readonly code: string;
    constructor(message: string);
}
export declare class InvalidMimeTypeError extends AssetUploadError {
    readonly code = "invalid_mime";
}
export declare class InvalidFilenameError extends AssetUploadError {
    readonly code = "invalid_filename";
}
export declare class ForbiddenError extends AssetUploadError {
    readonly code = "forbidden";
}
export declare class LocalBackendNotSupportedError extends AssetUploadError {
    readonly code = "local_backend";
}
export declare class TokenInvalidError extends AssetUploadError {
    readonly code = "token_invalid";
}
export declare class UploadNotReceivedError extends AssetUploadError {
    readonly code = "upload_not_received";
}
export declare class UploadValidationError extends AssetUploadError {
    readonly code = "upload_validation";
}
