import type { ManagementClient } from '../../client/management';
import type { PulledContent } from '../../client/management/types';
import type { LocalContent } from '../content/reader';
import { type LocalMediaManifest } from '../content/media-manifest';
export type LocalMediaPushSummary = {
    totalReferences: number;
    identifiers: number;
    resolved: number;
    reused: number;
    uploaded: number;
    assigned: number;
    skipped: number;
    pendingUploads: number;
    pendingAssignments: number;
};
export type LocalMediaPushResult = {
    content: LocalContent;
    manifest: LocalMediaManifest;
    summary: LocalMediaPushSummary;
    warnings: string[];
    errors: string[];
    hasChanges: boolean;
};
export type LocalMediaPullSummary = {
    totalReferences: number;
    identifiersAssigned: number;
    downloaded: number;
    skipped: number;
    pendingDownloads: number;
};
export type LocalMediaPullResult = {
    content: PulledContent;
    manifest: LocalMediaManifest;
    summary: LocalMediaPullSummary;
    warnings: string[];
};
type SyncLocalMediaForPushOptions = {
    contentDir: string;
    content: LocalContent;
    client: ManagementClient;
    dryRun: boolean;
    forceUpdateAsset?: boolean;
};
type SyncLocalMediaForPullOptions = {
    contentDir: string;
    content: PulledContent;
    client: ManagementClient;
    dryRun: boolean;
    allowCmsWrites?: boolean;
    supabaseUrl?: string;
    siteId?: string;
    downloadFiles: boolean;
};
export declare function syncLocalMediaForPush(options: SyncLocalMediaForPushOptions): Promise<LocalMediaPushResult>;
export declare function syncLocalMediaForPull(options: SyncLocalMediaForPullOptions): Promise<LocalMediaPullResult>;
export {};
