import { Bot, Context, FlatPick, Logger, Schema, Session } from "koishi";
import { Notifier } from "@koishijs/plugin-notifier";
import { LoginBili } from "./database";
type ChannelIdArr = Array<{
    channelId: string;
    dynamic: boolean;
    live: boolean;
    atAll: boolean;
}>;
type TargetItem = {
    channelIdArr: ChannelIdArr;
    platform: string;
};
type Target = Array<TargetItem>;
type SubItem = {
    id: number;
    uid: string;
    roomId: string;
    target: Target;
    platform: string;
    live: boolean;
    dynamic: boolean;
    liveDispose: Function;
};
type SubManager = Array<SubItem>;
declare class ComRegister {
    static inject: string[];
    qqRelatedBotList: Array<string>;
    logger: Logger;
    config: ComRegister.Config;
    loginTimer: Function;
    num: number;
    rebootCount: number;
    subNotifier: Notifier;
    subManager: SubManager;
    loginDBData: FlatPick<LoginBili, "dynamic_group_id">;
    privateBot: Bot<Context>;
    dynamicDispose: Function;
    sendMsgFunc: (bot: Bot<Context, any>, channelId: string, content: any) => Promise<void>;
    constructor(ctx: Context, config: ComRegister.Config);
    init(ctx: Context, config: ComRegister.Config): Promise<void>;
    splitMultiPlatformStr(str: string): Target;
    getBot(ctx: Context, pf: string): Bot<Context, any>;
    sendPrivateMsg(content: string): Promise<void>;
    sendPrivateMsgAndRebootService(ctx: Context): Promise<void>;
    sendPrivateMsgAndStopService(ctx: Context): Promise<void>;
    sendMsg(ctx: Context, targets: Target, content: any, live?: boolean): Promise<void>;
    dynamicDetect(ctx: Context): () => Promise<void>;
    debug_dynamicDetect(ctx: Context): () => Promise<void>;
    liveDetect(ctx: Context, roomId: string, target: Target): () => Promise<void>;
    subShow(): string;
    checkIfNeedSub(liveSub: boolean, dynamicSub: boolean, session: Session, liveRoomData: any): Promise<Array<boolean>>;
    updateSubNotifier(ctx: Context): void;
    checkIfLoginInfoIsLoaded(ctx: Context): Promise<unknown>;
    subUserInBili(ctx: Context, mid: string): Promise<{
        flag: boolean;
        msg: string;
    }>;
    loadSubFromConfig(ctx: Context, subs: ComRegister.Config["sub"]): Promise<void>;
    loadSubFromDatabase(ctx: Context): Promise<void>;
    checkIfDynamicDetectIsNeeded(ctx: Context): void;
    enableDynamicDetect(ctx: Context): void;
    unsubSingle(ctx: Context, id: string, type: number): string;
    checkIfUserIsTheLastOneWhoSubDyn(): void;
    unsubAll(ctx: Context, uid: string): void;
    checkIfIsLogin(ctx: Context): Promise<boolean>;
}
declare namespace ComRegister {
    interface Config {
        sub: Array<{
            uid: string;
            dynamic: boolean;
            live: boolean;
            target: Array<{
                channelIdArr: Array<{
                    channelId: string;
                    dynamic: boolean;
                    live: boolean;
                    atAll: boolean;
                }>;
                platform: string;
            }>;
        }>;
        master: {
            enable: boolean;
            platform: string;
            masterAccount: string;
            masterAccountGuildId: string;
        };
        unlockSubLimits: boolean;
        automaticResend: boolean;
        changeMasterInfoApi: boolean;
        restartPush: boolean;
        pushTime: number;
        liveLoopTime: number;
        customLiveStart: string;
        customLive: string;
        customLiveEnd: string;
        dynamicUrl: boolean;
        dynamicLoopTime: number;
        dynamicCheckNumber: number;
        filter: {
            enable: boolean;
            notify: boolean;
            regex: string;
            keywords: Array<string>;
        };
        dynamicDebugMode: boolean;
    }
    const Config: Schema<Config>;
}
export default ComRegister;
