/** 默认最大字节数（32 KB） */
export declare const DEFAULT_MAX_BYTES: number;
/** compressBase64Image / compressDataURI 的选项 */
export interface CompressOptions {
    /** 压缩目标上限（字节），默认 32 KB */
    maxBytes?: number;
    /** 源 MIME 类型（仅用于解码，默认 'image/png'） */
    mimeType?: string;
}
/** prepareImageInputForProvider 的选项 */
export interface PrepareImageOptions {
    /** AI provider 名称（决定是否支持内联图片） */
    provider?: string;
    /** KeepworkSDK 实例（上传时用于获取 token） */
    sdk?: {
        token?: string | null;
        getUserId?: () => Promise<string | null | undefined>;
    };
    /** 压缩字节上限 */
    maxBytes?: number;
    /** 上传时使用的文件名 */
    fileName?: string;
    /** 当 provider 不支持内联图片时是否自动上传，默认 true */
    uploadWhenUnsupported?: boolean;
}
/** OpenAI 多模态 content 数组的单个元素 */
export interface ContentItem {
    type: string;
    text?: string;
    image_url?: {
        url: string;
        [key: string]: unknown;
    };
    [key: string]: unknown;
}
/**
 * 估算纯 base64 字符串对应的字节数（不含 data-URI 前缀）。
 * 公式：`floor(len * 3/4) - padding`
 */
declare function base64ByteSize(base64: string): number;
/**
 * 拆分 data-URI，返回 `{ mimeType, base64 }`。
 * 若输入无前缀，MIME 默认为 'image/png'。
 */
declare function splitDataURI(dataURI: string): {
    mimeType: string;
    base64: string;
};
/**
 * 判断指定 AI provider 是否支持内联 base64 图片。
 */
declare function providerSupportsInlineImages(provider: string | undefined): boolean;
/**
 * 压缩纯 base64 图像（无 data-URI 前缀）至指定字节上限。
 *
 * 压缩策略（按顺序尝试）：
 * 1. 逐步降低 JPEG 质量（0.8 → 0.6 → 0.4 → 0.2）
 * 2. 若仍超限，将分辨率减半后重复步骤 1（最多迭代 6 次）
 *
 * @param inputBase64 - 纯 base64 字符串（无 data-URI 前缀）
 * @param options     - 压缩选项
 * @returns 压缩后的纯 base64（JPEG 格式）
 */
export declare function compressBase64Image(inputBase64: string, options?: CompressOptions): Promise<string>;
/**
 * 压缩 data-URI 格式图像字符串（如 `data:image/png;base64,...`）。
 * 若已满足大小要求则原样返回。
 *
 * @param dataURI - 完整 data-URI 字符串
 * @param options - 压缩选项
 * @returns 压缩后的 data-URI（JPEG 格式）
 */
export declare function compressDataURI(dataURI: string, options?: CompressOptions): Promise<string>;
/**
 * 扫描 OpenAI 多模态 content 数组，压缩其中超限的内联 base64 图片。
 * 非图片元素和非 data-URI 的 URL 直接透传，不修改。
 *
 * @param contentArray - OpenAI content 数组（`{ type, text?, image_url? }[]`）
 * @param options      - 压缩选项
 * @returns 压缩后的新数组（原数组不变）
 */
export declare function compressContentImages(contentArray: ContentItem[], options?: CompressOptions): Promise<ContentItem[]>;
/**
 * 为指定 AI provider 准备图像输入：
 * - 若 provider 支持内联图片（Gemini/OpenAI/OpenRouter），压缩后内联返回
 * - 否则压缩后上传到 Keepwork 临时 CDN，返回 CDN URL
 * - `uploadWhenUnsupported=false` 时即使不支持也直接返回压缩后的 data-URI
 *
 * @param image   - 图像字符串或含 `url` / `image_url.url` 字段的对象
 * @param options - provider、sdk、maxBytes 等选项
 */
export declare function prepareImageInputForProvider(image: string | ContentItem | Record<string, unknown>, options?: PrepareImageOptions): Promise<string | ContentItem | Record<string, unknown>>;
/**
 * 上传 base64 图像（或 data-URI）到 Keepwork 临时视觉 CDN。
 *
 * 流程（对应 Lua `FileTools.UpLoadVisionFile`）：
 * 1. 从 `keepwork.shareBlock.getToken` 获取七牛 upload token
 * 2. 将二进制内容上传到七牛
 * 3. 返回公开 CDN URL
 *
 * @param base64OrDataURI - 纯 base64 或完整 data-URI
 * @param options         - sdk、fileName、maxBytes 等选项
 * @returns 公开 CDN URL（如 `https://tempvision.keepwork.com/<key>`）
 */
export declare function uploadTempVisionImage(base64OrDataURI: string, options?: PrepareImageOptions): Promise<string>;
export { base64ByteSize, splitDataURI, providerSupportsInlineImages, };
//# sourceMappingURL=ImageUtils.d.ts.map