import { Context, Dict } from 'koishi';
import { ImageData } from './types';
declare module 'koishi' {
    interface Context {
        runtime?: {
            currentTokenIndex: number;
            tokenUsage?: Record<number, boolean>;
            tokenPool?: string[];
            poolIndex?: number;
            lastPoolRefreshTime?: number;
            _forcedTokenIndex?: number;
            _redraw?: boolean;
            _timeStamp?: number;
            _taskIndex?: number;
            _taskId?: number;
        };
    }
}
export declare function project(object: {}, mapping: {}): {};
export interface Size {
    width: number;
    height: number;
}
export declare function getImageSize(buffer: ArrayBuffer): Size;
export declare function download(ctx: Context, url: string, headers?: {}): Promise<ImageData>;
export declare function calcAccessKey(email: string, password: string): Promise<string>;
export declare function calcEncryptionKey(email: string, password: string): Promise<string>;
export declare class NetworkError extends Error {
    params: {};
    constructor(message: string, params?: {});
    static catch: (mapping: Dict<string>) => (e: any) => never;
}
export declare function initTokenPool(ctx: Context): Promise<string[]>;
export declare function login(ctx: Context, email: string, password: string): Promise<string>;
export declare function closestMultiple(num: number, mult?: number): number;
export interface Size {
    width: number;
    height: number;
    /** Indicate whether this resolution is pre-defined or customized */
    custom?: boolean;
}
export declare function resizeInput(size: Size): Size;
export declare function forceDataPrefix(url: string, mime?: string): string;
export declare function createContextWithRuntime(ctx: Context, runtime: any): Context;
