import { execFile } from "node:child_process";
import { type Config } from "../../infra/config.js";
import type { WsBridge } from "../../ws-bridge.js";
import type { RenderQueue, RenderJob } from "../render-queue/index.js";
import { type Composition } from "../../shared/composition.js";
export declare const execFileAsync: typeof execFile.__promisify__;
export declare function runTrendScript(platform: string): Promise<string>;
export declare function getMimeType(filePath: string): string;
export declare function assetSecurityHeaders(mimeType: string): Record<string, string>;
export declare const ALLOWED_UPLOAD_EXTS: Set<string>;
export declare const MAX_UPLOAD_BYTES: number;
export declare const uploadBodyLimit: import("hono").MiddlewareHandler;
export declare function setWsBridge(bridge: WsBridge): void;
/** Read the process-lifetime WsBridge singleton (null until index.ts sets it). */
export declare function getWsBridge(): WsBridge | null;
export declare function setRenderQueue(q: RenderQueue | null): void;
/** Read the process-lifetime RenderQueue singleton (null until index.ts sets it). */
export declare function getRenderQueue(): RenderQueue | null;
export declare const SECRET_PATHS: readonly [{
    readonly metaKey: "openrouterKey";
    readonly read: (c: Config) => string | undefined;
}, {
    readonly metaKey: "jimengAccessKey";
    readonly read: (c: Config) => string | undefined;
}, {
    readonly metaKey: "jimengSecretKey";
    readonly read: (c: Config) => string | undefined;
}, {
    readonly metaKey: "memoryApiKey";
    readonly read: (c: Config) => string | undefined;
}];
export declare const SECRET_BEARING_KEYS: readonly ["openrouter", "jimeng", "memory"];
export declare const SECRET_FIELDS: readonly ["openrouterKey"];
/** Build the redacted secretMeta map by sweeping SECRET_PATHS. */
export declare function buildSecretMeta(config: Config): Record<string, {
    set: boolean;
    lastFour: string;
}>;
export declare function redactedConfigResponse(config: Config, extras?: Record<string, unknown>): Record<string, unknown>;
export declare function cancelInFlightRenders(queue: Pick<RenderQueue, "list" | "cancel">, workId: string): string[];
export declare function findActiveRenderJob(queue: Pick<RenderQueue, "list">, workId: string): RenderJob | null;
export declare function synthesiseLegacyComposition(workId: string, workType: string): Promise<unknown | null>;
/**
 * For compositions that pre-date Phase 1 (no assets/provenance arrays), walk
 * every clip's `src` and produce one AssetEntry per unique uri plus one
 * `import` provenance edge per asset. Idempotent: if assets[] is already
 * populated, the comp is returned unchanged.
 */
export declare function synthesiseLegacyAssetsAndProvenance(comp: Composition): Composition;
export declare function synthesiseLegacyCarousel(workId: string, workType: string): Promise<unknown | null>;
export declare function safeTitleFromWork(title: string | undefined): string;
export declare function researchTrends(platforms: string[]): Promise<{
    collected: string[];
    errors: string[];
}>;
//# sourceMappingURL=_shared.d.ts.map