import { type AssetAttachment } from "../content/asset.js";
type AcquiredAssetInputBase = {
    sourceKind: "file" | "asset-url";
    sourceLabel: string;
    attachment: AssetAttachment;
    sizeBytes: number | null;
};
export type AcquiredAssetInput = AcquiredAssetInputBase & ({
    kind: "resolved-asset";
} | {
    kind: "resolved-media";
});
export type AcquiredResolvedAssetInput = AcquiredAssetInputBase & {
    kind: "resolved-asset";
};
export type AcquiredMediaInput = AcquiredAssetInputBase & {
    kind: "resolved-media";
};
export type MaterializedAcquiredInput = {
    filePath: string;
    cleanup: () => Promise<void>;
};
export type UrlAssetRoute = "asset" | "audio" | "video" | "none";
export declare function isTranscribableAssetPath(value: string): boolean;
export declare function isPdfAssetPath(value: string): boolean;
export declare function getLocalAssetSize(filePath: string): Promise<number | null>;
export declare function acquireLocalAssetInput({ filePath, maxBytes, }: {
    filePath: string;
    maxBytes?: number;
}): Promise<AcquiredAssetInput>;
export declare function resolveUrlAssetRoute({ url, isYoutubeUrl, fetchImpl, timeoutMs, detectUnknownAssetUrls, assumeAsset, }: {
    url: string;
    isYoutubeUrl: boolean;
    fetchImpl: typeof fetch;
    timeoutMs: number;
    detectUnknownAssetUrls?: boolean;
    assumeAsset?: boolean;
}): Promise<UrlAssetRoute>;
export declare function createRemoteMediaInput(url: string): AcquiredMediaInput;
export declare function acquireRemoteAssetInput({ url, fetchImpl, timeoutMs, }: {
    url: string;
    fetchImpl: typeof fetch;
    timeoutMs: number;
}): Promise<AcquiredAssetInput | null>;
export declare function materializeAcquiredMediaInput(input: AcquiredMediaInput): Promise<MaterializedAcquiredInput>;
export {};
