import type { OutputContext } from '../../../output';
import type { Theme } from '../../../../contracts';
export type ThemePushClient = {
    theme: {
        upsert: (params: {
            theme: Theme;
            themeId?: string;
            selectionId?: string;
        }) => Promise<{
            themeId: string;
            selectionId: string;
            savedAt: string;
        }>;
    };
    pull: {
        theme: () => Promise<{
            meta: {
                updatedAt?: string | null;
            };
        }>;
    };
};
export type ThemeMetaEntry = {
    themeId: string;
    selectionId: string;
    updatedAt: string;
};
export type ThemesMetaFile = {
    pulledAt: string;
    themes: Record<string, ThemeMetaEntry>;
};
export declare function pushThemeAndUpdateMeta(params: {
    client: ThemePushClient;
    contentDir: string;
    themeName: string;
    theme: Theme;
    existingMeta?: ThemeMetaEntry;
    readThemesMeta: (contentDir: string) => Promise<ThemesMetaFile | null>;
    writeThemesMeta: (contentDir: string, data: ThemesMetaFile) => Promise<void>;
}): Promise<{
    themeId: string;
    selectionId: string;
    savedAt: string;
}>;
/**
 * Handle theme push with validation and output.
 * Used by both the early-return path (no content changes) and the main flow.
 */
export declare function handleThemePushForAllScope(params: {
    client: ThemePushClient;
    contentDir: string;
    cliConfig: {
        activeTheme?: string;
    };
    output: OutputContext;
    options: {
        dryRun: boolean;
        afterContentPush?: boolean;
    };
    readTheme: (contentDir: string, themeName: string) => Promise<{
        name: string;
        theme: Theme;
    } | null>;
    readThemesMeta: (contentDir: string) => Promise<ThemesMetaFile | null>;
    writeThemesMeta: (contentDir: string, data: ThemesMetaFile) => Promise<void>;
    themeSchema: {
        safeParse: (value: unknown) => {
            success: true;
            data?: unknown;
        } | {
            success: false;
            error: {
                issues: Array<{
                    path: Array<PropertyKey>;
                    message: string;
                }>;
            };
        };
    };
}): Promise<void>;
