/** Pick a sensible extension for a buffer based on (in order):
 *    1. content-type header from the CDN response
 *    2. the original filename (for msgtype='file') if it has one
 *    3. fallback 'bin' so the file is always inspectable on disk
 *
 *  Same map shape as telegram's pickExtension but DingTalk also delivers
 *  voice as audio/amr — distinct from anything telegram sees. */
export declare function pickDingTalkExtension(contentType: string | undefined, originalFilename: string | undefined): string;
/** Write `buffer` to `<MEDIA_ROOT>/dingtalk/<subPath>/<filename>` and
 *  return the absolute path. Refuses path-traversal in filename / subPath
 *  (segments containing `/`, `\`, or `..` are rejected before mkdir).
 *
 *  Caller is responsible for the size cap — `dingtalk-client.ts`
 *  already enforces MAX_MEDIA_BYTES before handing us the buffer. */
export declare function saveDingTalkMedia(buffer: Buffer, subPath: string, filename: string): Promise<string>;
//# sourceMappingURL=media-store.d.ts.map