import type { DataStore } from '../data-store/index.js';
export interface ChannelConfig {
    characterId: string;
    normalChannel?: {
        chatId: number;
        title: string;
        inviteLink?: string;
        memberCount: number;
    };
    vipChannel?: {
        chatId: number;
        title: string;
        inviteLink?: string;
        memberCount: number;
        starPrice: number;
    };
    publishSchedule?: string;
    createdAt: string;
    updatedAt: string;
}
export interface TelegramBotClient {
    createChannel(title: string, description?: string): Promise<{
        chatId: number;
        inviteLink?: string;
    }>;
    sendMessage(chatId: number, text: string): Promise<void>;
    sendPhoto(chatId: number, photo: string, caption?: string): Promise<void>;
    sendPaidMedia(params: {
        chat_id: number;
        star_count: number;
        media: Array<{
            type: 'photo';
            media: string;
        }>;
        caption?: string;
    }): Promise<void>;
    getChatMemberCount(chatId: number): Promise<number>;
}
type BotClientGetter = (characterId: string) => TelegramBotClient | undefined;
export declare class ChannelManager {
    private store;
    private getBotClient;
    private configs;
    private cronJobs;
    constructor(store: DataStore, getBotClient: BotClientGetter);
    createChannels(characterId: string, botClient: TelegramBotClient, normalTitle: string, vipTitle: string): Promise<ChannelConfig>;
    getChannelConfig(characterId: string): Promise<ChannelConfig | null>;
    updateChannelConfig(characterId: string, updates: Partial<ChannelConfig>): Promise<ChannelConfig>;
    publishToNormal(characterId: string, content: {
        text?: string;
        photoUrl?: string;
        caption?: string;
    }): Promise<void>;
    publishToVIP(characterId: string, imageUrl: string, starCount: number, caption?: string): Promise<void>;
    getStats(characterId: string): Promise<{
        normalMembers: number;
        vipMembers: number;
    } | null>;
    startSchedule(characterId: string, cronExpression: string): void;
    stopSchedule(characterId: string): void;
    stopAllSchedules(): void;
    private saveConfig;
    private loadConfig;
}
export {};
//# sourceMappingURL=channel-manager.d.ts.map