/**
 * Media Operations for SDK Management Client
 *
 * Provides methods for syncing media files between environments.
 */
import type { ManagementClientConfig, ManagementMediaAsset, MediaResolveResponse } from './types';
/**
 * Result of a media upload
 */
export interface MediaUploadResult {
    storagePath: string;
    status: 'created' | 'exists';
    assetId?: string;
    identifier?: string | null;
}
/**
 * Result of a media exists check
 */
export interface MediaExistsResult {
    exists: boolean;
}
/**
 * Media operations interface
 */
export interface MediaOperations {
    /**
     * Upload a media file to the target environment.
     * If the file already exists, returns success without re-uploading.
     *
     * @param file - File data and metadata
     * @returns Upload result with storage path
     */
    upload(file: {
        data: Buffer;
        filename: string;
        contentType: string;
        storagePath?: string;
        title?: string;
        identifier?: string;
    }): Promise<MediaUploadResult>;
    /**
     * Check if a media file exists at the given storage path.
     *
     * @param storagePath - The storage path to check
     * @returns Whether the file exists
     */
    exists(storagePath: string): Promise<boolean>;
    /**
     * Resolve media assets by identifiers or asset IDs.
     */
    resolve(input: {
        identifiers?: string[];
        assetIds?: string[];
    }): Promise<MediaResolveResponse>;
    /**
     * Find media assets by checksum for dedupe.
     */
    findByChecksum(checksums: string[]): Promise<ManagementMediaAsset[]>;
    /**
     * Assign or update a media identifier.
     */
    assignIdentifier(input: {
        assetId: string;
        identifier: string | null;
        force?: boolean;
    }): Promise<ManagementMediaAsset>;
}
/**
 * Create media operations for the management client.
 * Uses direct-to-storage signed upload URLs for file uploads.
 */
export declare function createMediaOperations(config: ManagementClientConfig): MediaOperations;
