import type { OutputContext } from '../../output';
import type { PulledContent } from '../../../client/management/types';
import type { StaleItem } from './stale';
/**
 * Decide whether to resolve stale content inline or abort.
 *
 * Precedence (checked before calling this):
 *   --force  → skips stale check entirely (never reaches here)
 *   --dry-run → continues past stale (never reaches here)
 *
 * Inside this function:
 *   --auto-pull-stale → resolve
 *   --yes / non-TTY   → abort (can't prompt)
 *   interactive        → prompt user
 */
export declare function resolveStaleOrAbort(opts: {
    autoPullStale: boolean;
    yes: boolean;
}): Promise<'resolve' | 'abort'>;
/**
 * Write only the stale entries/pages/navigation/forms from the already-fetched
 * remoteContent to disk and update their metadata. Non-stale local content is
 * preserved — we only touch the specific items identified as stale.
 *
 * For entries and pages: overwrites the content files with remote data + updates metadata.
 * For navigation and forms: updates metadata timestamps only. These are single-file or
 * low-granularity scopes where the user's local edits ARE the content being pushed,
 * similar to theme/footer. Updating metadata clears the stale flag so the push proceeds.
 */
export declare function writeStaleItems(contentDir: string, remoteContent: PulledContent, staleItems: StaleItem[], output: OutputContext, options?: {
    skipMeta?: boolean;
}): Promise<void>;
/**
 * Update only the theme metadata timestamp without touching the theme content file.
 * Used when the local theme IS the content being pushed — we just need to acknowledge
 * the remote is newer so stale detection passes on the next push.
 */
export declare function updateStaleThemeMeta(contentDir: string, themeName: string, remoteUpdatedAt: string): Promise<void>;
/**
 * Update only the footer metadata timestamp without touching the footer content file.
 */
export declare function updateStaleFooterMeta(contentDir: string, remoteUpdatedAt: string): Promise<void>;
