import { type App, type IpcMain, type Session } from 'electron';
interface PluginHostBridge {
    app: App;
    ipcMain: IpcMain;
    session: Session;
    marketplaceDb?: {
        raw(): unknown;
        getMeta?(key: string): string | null;
        setMeta?(key: string, value: string): void;
        getActiveSession?(): {
            accessToken: string | null;
            refreshToken: string | null;
            expiresAt: string | null;
            user: Record<string, unknown> | null;
        } | null;
        listInstalled?(): unknown[];
    };
    pluginManager?: {
        install?(input: {
            id?: string | null;
            npm?: string | null;
            version?: string | null;
            tarballUrl?: string | null;
            autoGrant?: boolean | 'manifest' | string[] | null;
            activate?: boolean | null;
        }): Promise<unknown>;
        uninstall?(id: string): Promise<unknown>;
        activate?(id: string): Promise<unknown>;
        deactivate?(id: string): Promise<unknown>;
        upgrade?(id: string, version?: string | null): Promise<unknown>;
        listInstalled?(): unknown[];
    };
    serverBaseUrl?: string | null;
}
type ExposedApi = Record<string, (...args: any[]) => any>;
interface PluginContextLike<S> {
    host: PluginHostBridge;
    userDataDir: string;
    settings: {
        get(): S;
    };
    log: {
        info(msg: string, meta?: Record<string, unknown>): void;
        warn(msg: string, meta?: Record<string, unknown>): void;
        error(msg: string, meta?: Record<string, unknown>): void;
    };
    expose(api: ExposedApi): void;
}
export interface HdoPluginRuntimeSettings {
    adminPort?: number;
}
declare const hdoPlugin: {
    activate(ctx: PluginContextLike<HdoPluginRuntimeSettings>): Promise<() => Promise<void>>;
};
export default hdoPlugin;
