/**
 * URLs that already point at Trusys-managed storage should be stored as-is (no re-download / re-upload).
 * Primary: Azure Blob host. Secondary: path layout used by Control Plane uploads (`/workspace/.../project/...`).
 */
export declare function isTrusysAzureBlobStorageUrl(raw: string): boolean;
export declare function maxFileBytesForDatasetMediaType(expectedType: string): number;
export type IngestRemoteDatasetMediaUrlParams = {
    url: string;
    orgId: string;
    projectId: string;
    datasetId: string;
    token: string | string[] | undefined;
    /** When set, response is validated for this dataset media type and size caps apply. When omitted (e.g. generic ingest API), only a global max size is enforced. */
    expectedType?: string;
    generateSasToken: boolean;
};
/**
 * Download a remote http(s) media file and upload it to the dataset media folder in Azure (via Control Plane).
 * Caller must ensure the URL is not already a Trusys blob URL if passthrough is desired.
 */
export declare function ingestRemoteDatasetMediaUrl(params: IngestRemoteDatasetMediaUrlParams): Promise<string>;
export type ResolveMediaUrlItem = {
    url: string;
    expectedType?: string;
};
/**
 * For each item: if URL is already Trusys blob storage, return unchanged; otherwise ingest to Azure.
 */
export declare function resolveMediaUrlsToTrusysBlobs(params: {
    items: ResolveMediaUrlItem[];
    orgId: string;
    projectId: string;
    datasetId: string;
    token: string | string[] | undefined;
    generateSasToken: boolean;
}): Promise<string[]>;
//# sourceMappingURL=datasetMediaUrlResolver.d.ts.map